我想实现像按键精灵一样的功能,就是可以后台向某个程序发送一个文本消息。
是一个热血江湖游戏,但是我不知道他的文本框控件的CLASSNAME,请问有没有什么方法可以实现这个功能?
像按键精灵只需要设定一下窗口名就可以后以发送文本消息,发送键盘消息。
我写了段代码,但是不知道他的文本框控件的类型,试了很多次都不行,始终找不到,所以无法发送消息。代码如下:procedure TForm1.Button1Click(Sender: TObject);
begin
 hwndNotepad:=FindWindow(nil,'yb_onlineclient');
  if hwndNotepad=0 then
     begin
       ShowMessage('您尚未运行游戏客户端');
     Exit;
     end;
  hwndEdit:=FindWindowEx(hwndNotepad,0,'edit',0);  if hwndEdit=0 then
     begin
       ShowMessage('无法查找对话框');
       Exit;
     end;
    timer1.Interval:=StrToInt(edit3.text);
  timer1.enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SendMessage(hwndEdit,WM_SETTEXT,0,LongInt(edit1.text));
PostMessage(hwndnotepad,WM_KEYDOWN,13,0);
//PostMessage(hwndNotepad,WM_KEYDOWN,13,0);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
 timer1.Enabled:=false;
end;end.请高手指点一下,有代码最好。

解决方案 »

  1.   

    找找
    DirectInput
    or键盘驱动
    的samples 
      

  2.   

    Bear_hx:   有的是没有句柄的,像QQ登录窗口就是画出来的,这类没办法获得句柄,发消息也就没有了,要采取别的办法。
    --------------------------------------------------
       QQ登录窗口不是自己画出来,有句柄的,在Edit和ComboBox上面覆盖了一个Static控件,你设置那个窗口不可见,下面的窗口就出来了。是标准的控件。我测试的是QQ2007
       MSN才是找不到的。用DirectUI做的。   游戏中的文本框一般都是自己画上去的。消息由Form处理。你截获消息看一下。没有句柄的,都是父窗体传递给它的,研究一下看。
      

  3.   

    我用SPY++分析过,只能获得鼠标,键盘按下等操作,WM_KEYDOWN等,没有我需要的,再次郁闷。
    我现在只能用wm_char,逐个字节的去用postmessage发送,可问题也存在,不能按CTRL键,一按CTRL键我的消息发送就会中断,能用POSTMESSAGE发送文本消息过去,但是不能用POSTMESSAGE发送回车消息把字符串发送出去。造成的结果就是不停的发送文本消息,显示一大排,但是不会回车把文本发送出去。再郁闷。