+ -
当前位置:首页 → 问答吧 → DELPHI程序如何实现与游戏中的NPC对话

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,或者如何能将键盘模拟到游戏中去。

作者: fhsky1   发布时间: 2011-11-07

od找call!!!

作者: ghostcsa   发布时间: 2011-11-07