我有个程序,窗体里有三个句柄,我想在后台模拟鼠标单机,游戏没有屏蔽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;
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;
SendMessage(fu, WM_LBUTTONUP, 0, 0);
把这两句改成:
SendMessage(fu, BM_CLICK, 0, 0);也不行啊,望高手解答,非常感谢。
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);