我发送了一个按键到后台进程。它在前景但不在后台时有效

时间:2016-03-22 05:06:51

标签: c# process background sendmessage findwindow

我正在编写一个应该在后台运行可执行文件的机器人。

SendMessage(hWnd, WM_KEYDOWN, ((IntPtr)k), (IntPtr)0);

上面的行将向该进程发送一个密钥。如果我的光标在游戏的聊天框中,它将输入聊天框中的输入。

如果我不在聊天室中并发送它,那么它将无法执行任何操作,直到我进入该过程中它的行为就像我按住该键一样(我将朝着我持有的键的方向行走)直到我按下我发送的密钥(' s'是我正在使用的测试密钥),它将停止。我也尝试在使用WM_KEYUP标志后立即发送消息,但这并没有阻止任何事情。

SetForegroundWindow (hWnd);
SendMessage(hWnd, WM_KEYDOWN, ((IntPtr)k), (IntPtr)0);

此细分将定位流程并开始移动。

我一直在互联网上试图弄清楚如何在后台进行这项工作,以及只发送1个输入。我已经搞乱了间谍++,但我想如果在我被选中时发送命令时它是有效的,那一定是别的。

以下是我使用http://pastebin.com/Jbx9BfSm

操作的完整课程

1 个答案:

答案 0 :(得分:0)

您需要在将弹出窗体置于前面后设置焦点窗口。 聚焦窗口可以是按钮,列表框等

Focus and window activation in Win32

enter image description here