DELPHI程序如何实现与游戏中的NPC对话
时间:2011-11-07
来源:互联网
一直在玩大航海台服,最近对挂起了兴趣,想做个自动造船,后台模拟鼠标一切正常,但是在模拟键盘时出了点问题,就是在向游戏输入“TAB”或“回车”以及方向键的时候都没反应,无论是用sendmessage还是postmessage都不行。
游戏中直接操作是可以通过TAB键来切换屏幕上的NPC的,切到要对话的NPC按回车就可以对话,我的目的是想通过模拟输入TAB键来找到NPC,再按回车键与NPC对话。
精简后代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
hw:HWND;
begin
hw:=findwindow(nil,'大航海時代 Online');
if hw<>0 then
begin
sendmessage(hw,WM_LBUTTONDOWN,MK_LBUTTON,makelparam(637,417)); //在游戏屏幕的这个坐标点鼠标左键
sendmessage(hw,WM_LBUTTONUP,MK_LBUTTON,makelparam(637,417));
postmessage(hw,WM_keydown,$1B,0); //输入TAB键
sleep(1000);
postmessage(hw,WM_keydown,$0D,0); //输入回车
end;
end;
代码运行后可以通过,模拟鼠标输入正常,可是点击按钮游戏中没反应,postmessage换成sendmessage也不行,感觉有点像在记事本中少一个寻找子窗口的findwindowex的语句一样,但是用SPY++无法看到游戏中有子窗口,所以没法加findwindowex查找句柄。
请求高手能帮忙怎么样才能找到游戏中的NPC,或者如何能将键盘模拟到游戏中去。
游戏中直接操作是可以通过TAB键来切换屏幕上的NPC的,切到要对话的NPC按回车就可以对话,我的目的是想通过模拟输入TAB键来找到NPC,再按回车键与NPC对话。
精简后代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
hw:HWND;
begin
hw:=findwindow(nil,'大航海時代 Online');
if hw<>0 then
begin
sendmessage(hw,WM_LBUTTONDOWN,MK_LBUTTON,makelparam(637,417)); //在游戏屏幕的这个坐标点鼠标左键
sendmessage(hw,WM_LBUTTONUP,MK_LBUTTON,makelparam(637,417));
postmessage(hw,WM_keydown,$1B,0); //输入TAB键
sleep(1000);
postmessage(hw,WM_keydown,$0D,0); //输入回车
end;
end;
代码运行后可以通过,模拟鼠标输入正常,可是点击按钮游戏中没反应,postmessage换成sendmessage也不行,感觉有点像在记事本中少一个寻找子窗口的findwindowex的语句一样,但是用SPY++无法看到游戏中有子窗口,所以没法加findwindowex查找句柄。
请求高手能帮忙怎么样才能找到游戏中的NPC,或者如何能将键盘模拟到游戏中去。
作者: fhsky1 发布时间: 2011-11-07
od找call!!!
作者: ghostcsa 发布时间: 2011-11-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28