我有個程式,表單里有三個句柄,我想在后臺模擬滑鼠單機,游戲沒有屏蔽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;
uj5u.com熱心網友回復:
試試BM_CLICK訊息,應該是VCL的訊息。uj5u.com熱心網友回復:
SendMessage(fu,WM_LBUTTONDOWN, 0, 0);SendMessage(fu, WM_LBUTTONUP, 0, 0);
把這兩句改成:
SendMessage(fu, BM_CLICK, 0, 0);
也不行啊,望高手解答,非常感謝。
uj5u.com熱心網友回復:
SendMessage(fu,WM_LBUTTONDOWN, 1, x and 65535 + y shl 16); // x, y 是點擊的位置坐標uj5u.com熱心網友回復:
SetCursorPos(x, y);mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
uj5u.com熱心網友回復:
我不用mouse_event,我需要的后臺,mouse_event只適用前臺,不過還是謝謝你的回復,非常感謝。uj5u.com熱心網友回復:
后臺按鍵得發送封包啊,發送封包函式注入到執行緒去吧uj5u.com熱心網友回復:
確定你的句柄正確?uj5u.com熱心網友回復:
封包不會弄,注入執行緒目前還不會。
我嘗試用spy++,捕捉不到滑鼠的點擊訊息,但是可以捕捉到滑鼠移動的訊息,是不是屏蔽了訊息,但是如果屏蔽訊息的話,按道理,滑鼠移動訊息也捕捉不到,為什么滑鼠移動訊息又可以捕捉,點擊訊息就捕捉不到?
uj5u.com熱心網友回復:
封包試過了,一發封包就被踢下線
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19263.html
