我有个程序,窗体里有三个句柄,我想在后台模拟鼠标单机,游戏没有屏蔽sendmessage,postmessage等api.但是一直无法实现,烦请大神指点迷津。代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
fu,zi,sun:Thandle; //父,子,孙三句柄
ps: TPoint;
begin    fu:= FindWindow('Client-I4194304',' 战场2 官方服务器');
    if fu<>0 then
    begin
    zi:=FindWindowEx(fu,0,nil,nil);
    //
    if zi<>0 then
    begin
     sun:=FindWindowEx(zi,0,nil,nil);
    end;
    if sun<>0 then
    begin
     PostMessage(fu,WM_SYSCOMMAND, SC_RESTORE,0);
    end;
    end;
    SetForegroundWindow(FU);
    sleep(5000);
     GetCursorPos(ps);
     SetCursorPos(ps.X,ps.Y);
    sleep(100);    //SendMessage(zi,WM_LBUTTONDBLCLK,0,0);
    SendMessage(fu, WM_NCACTIVATE, WA_ACTIVE, 0);
    SendMessage(fu,WM_LBUTTONDOWN, 0, 0);    SendMessage(fu, WM_LBUTTONUP, 0, 0);
end;

解决方案 »

  1.   

    试试BM_CLICK消息,应该是VCL的消息。
      

  2.   

        SendMessage(fu,WM_LBUTTONDOWN, 0, 0);
       SendMessage(fu, WM_LBUTTONUP, 0, 0);
    把这两句改成:
    SendMessage(fu, BM_CLICK, 0, 0);也不行啊,望高手解答,非常感谢。
      

  3.   

    SendMessage(fu,WM_LBUTTONDOWN, 1, x and 65535 + y shl 16);  // x, y 是点击的位置坐标
      

  4.   

      SetCursorPos(x, y);
      mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
      mouse_event(MOUSEEVENTF_LEFTUP,   0, 0, 0, 0);
      

  5.   

    我不用mouse_event,我需要的后台,mouse_event只适用前台,不过还是谢谢你的回复,非常感谢。
      

  6.   

    封包不会弄,注入线程目前还不会。我尝试用spy++,捕捉不到鼠标的点击消息,但是可以捕捉到鼠标移动的消息,是不是屏蔽了消息,但是如果屏蔽消息的话,按道理,鼠标移动消息也捕捉不到,为什么鼠标移动消息又可以捕捉,点击消息就捕捉不到?