2011-05-19 98 views
0

我嘗試將鼠標單擊事件發送給遊戲應用程序。首先,我使用Spy ++來查找應用程序收到的消息。我看到類似於:WM_MOUSEACTIVATE,WM_WINDOWPOSCHANGING,WM_ACTIVATEAPP,WM_ACTIVATE,WM_SETFOCUS,... 我嘗試發送相同的,因爲我看到的間諜++,但它不起作用。如何將鼠標點擊發送到遊戲應用程序而不必關注它? 。它以窗口模式運行。提前致謝。如何將鼠標點擊事件發送到遊戲應用程序?

+0

請注意,如果您打算爲遊戲創建作弊行爲,那麼這可能是不太可靠/優雅的方式:) – ereOn 2011-05-19 12:19:25

+0

發佈一些代碼,以瞭解如何發送消息。以及如何獲得遊戲窗口的處理。 – RedX 2011-05-19 13:24:32

+0

:) ..雅..我嘗試寫一個bot程序(自動?)。我不知道如何用英語稱呼它。這款遊戲沒有X-trap,N-Protect遊戲守衛等任何保護器。你能告訴我我該怎麼做嗎?我應該學什麼? 。我花了很多時間給它發送消息XD – 2011-05-19 13:25:47

回答

1

你想要WM_LMOUSEDOWN。您可以隨時查閱MSDN以瞭解哪些消息具有什麼意義。

+1

與「WM_LBUTTONDOWN」相同嗎? – 2011-05-19 12:18:49

+0

我也發送WM_LBUTTONDOWN,我檢查我發送的每封郵件的MSDN。我也檢查Spy ++,並且我看到我的應用程序收到了我所發送的所有消息,但它仍然無效。我不明白。 – 2011-05-19 13:17:56

1

使應用程序和遊戲自動化的最佳方式是通過SendInput。雖然理論上應該可以通過WM_LUBTTONDOWN等來驅動應用程序,但許多應用程序直接通過較低級別的API(例如GetAsyncKeyState)直接讀取關鍵狀態,這些API不改變它們的狀態以反映從消息隊列處理的消息。

使用SendInput需要實際將遊戲設置爲前景,因爲輸入事件在低級別處合成並因此被傳送到活動/聚焦窗口。

+0

我試過了:INPUT minput; \t minput.type = INPUT_MOUSE; \t minput.mi.dx = 200; \t minput.mi.dy = 200; \t minput.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; \t minput.mi.time = 0; SetForegroundWindow(hRO); \t睡眠(5000); (0,L「SENDINPUT ERROR」,L「ERROR」,0);如果(SendInput(1,&minput,sizeof(INPUT))== 0) \t MessageBox我運行並手動點擊到遊戲窗口,它有一個LBUTTONDOWN,但在我的鼠標位置,不在200:200。 – 2011-05-20 01:17:44

+0

如果我不點擊遊戲窗口,它會點擊我的鼠標位置。我的意思是它有一個LBUTTONDOWN狀態,所以它在我點擊鼠標左鍵並拖動時工作。 – 2011-05-20 01:33:12