2011-05-19 143 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

相关问题