我模仿外挂写了段代码,在奇迹(MU)中可以弹出一个窗口,但是有些问题。第一,如果窗口的ParentHandle设成奇迹(MU)的窗口,那么弹出的窗口没有鼠标箭头,你连续双击弹出窗口的输入框,那么奇迹的密码输入框将不能在输入任何字符(就好像在不能获得焦点一样,但是光标的位置还在密码框上。)第二,奇迹(MU)可能设计了自己的保护方法,也就是在失去激活状态后会马上退出程序(你可以按两下WIN键试试效果)。同样道理,这样用SetParent的方法把他的全屏模式改成了窗口模式,你去点两下窗口外或窗口的Title,那么奇迹(MU)也会马上退出。针对上面我想问三个问题,一,怎么在奇迹(MU)中做一个有鼠标可操作的弹出式对话框。二,怎样在让奇迹在焦点移到对话框后,重新获得输入焦点,并能够输入。三,怎样解决奇迹(MU)失去激活状态后不退出程序。
解决方案 »
- 请问,如何把一个图片插入到数据库中指定的字段中?
- 请教:如何得到 richeEdit 某个字符 距 richEdit 左边的距离
- 求一个思路,或有第三方控件实现也(有关Dbgrid).
- 线程同步机制问题
- 请教,在quickreport中如何实现每页合计?用什么控键呢???在线等待
- DateTimePicker怎么用?!!!我是小鸟我怕啥
- 急:请问怎样隐藏Memo中的光标?
- 高分求MMSYSTEM 方面的中文资料!
- 一个关于扫描枪的问题《62》
- 如何在win2000下彻底的关闭计算机,包括关闭ATX电源
- ★★★CSDN Delphi提问指南(个人观点,仅供参考,希望大家讨论)★★★
- 因业务需要,本公司高薪聘Delphi开发人员
是不是可以这样,让奇迹(MU)和你的对话框共存。。
估计奇迹的winmain里面总有类似的代码
while (TRUE) {
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
// Translate and dispatch the message
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
UpdateGameFrame(); //这个一般就是游戏图象刷新入口
}
能不能dll判断如果按键hotkey,把上面的代码改一下。
比如:
else
UpdateGameFrame(); //这个一般就是游戏图象刷新入口 //把这个地方改成
UpdateGameFrame();后,再显示你的modeless dialog窗口,这样不就能共存了吗??
估计弹出的是model dialog,游戏程序就会有问题
PopForm.ParentHandle := MuWHandle; ---没有鼠标,没有焦点,但是窗口可以弹出来
//windows.SetParent(PopForm.Handle,MuWHandle); ---会有闪烁现象,不知道怎么解决
PopForm.Show;
PopForm.Repaint;上面是我写的代码的部分,当然是用HOOK来呼出的。
大家可以试试,然后再来告诉我解决方法。
重载窗体的下面函数.
procedure TDialogForm.Createparams(var Params: TCreateParams);
begin inherited;
With Params do
begin
Style := WS_CHILD;
EXStyle:=WS_EX_TOPMOST;
WndParent := GetDesktopWindow;
end;
end;
并且我发现很重要的一点就是在winmain()的主事件循环前注册了一个热键:RegisterHotKey
你们猜是什么?哈哈,就是Alt+Tab。
.text:004150F4 6A 09 push 9 ; vk:VK_TAB
.text:004150F6 6A 01 push 1 ; Modifiers:MOD_ALT
.text:004150F8 6A 00 push 0 ; id
.text:004150FA A1 14 1E 61 05 mov eax, hWnd
.text:004150FF 50 push eax ; hWnd
.text:00415100 FF 15 C8 C2 5A 00 call ds:RegisterHotKey
>但是光标的位置还在密码框上。)以上所说没有鼠标可能是因为游戏的画面全是由DirectX游戏引擎控制了最低层的显卡硬件来绘制的,游戏中的鼠标是由游戏引擎的绘图接口绘制的精灵.窗体自定的鼠标已被程序设为隐形了.在编写游戏时就不能调用普通的GDI来绘窗体和控件.所以一般程序中的以GDI为低层的窗体和控件在做为游戏主窗体的子窗体时就会出现异常.估计用DirectX中的图形接口在游戏窗体上自绘窗体和控件不会有问题.这样的程序没有试过.学习一下DirectX游戏编程对做这们的外挂应该会有帮助.
我给原代码~~
主要是使用钩子进行进程注入
先SetWindowsHookEx安装目标窗口的钩子,一般是用WH_GETMESSAGE钩住GetMessage函数,这样可以抢先获取消息。
再向目标窗口发送任意消息(一般是无意义消息),就可以触发已经注入目标窗口进程的自己的程序,用SetWindowLong改变其窗口响应函数,就可以响应自己定制的消息,可以完成弹出窗口等自己想要的功能了。
弹出窗口时只要设置弹出窗口的父窗口为目标窗口,因为又在目标窗口的进程空间中,就可以实现DX下弹出了。
第一:
不是 获取焦点的问题.......
OpenGL 程序中ShowCursor(True)第二:
你用HOOK注入MU 就没问题了!我也正在研究MU的外挂程序 正在努力中............
我耶用第2点啊,呵呵