5

有没有办法将击键发送到当前未在 C++ 中选择的窗口?例如,如果我有一个最小化的记事本窗口,并希望在其中键入一些文本而不将窗口置于前面。

我正在使用 Windows 7 64 位。

4

2 回答 2

6

一般来说,如果不使用SendInput().

是的,你可以试试PostMessage(),但是eznme的回答充其量是误导性的。SendMessage. 正如我和其他人每天在这里多次所说的那样,输入被发布到消息队列而不是发送到窗口句柄。

综上所述,如果您不想让记事本窗口输入焦点,那么很难通过伪造来获取文本。效果更好且更易于使用的非常简单的替代方法是找到记事本EDIT窗口的窗口句柄并使用WM_GETTEXTWM_SETTEXT,例如直接修改其内容。

事实上,一旦您拥有了这个窗口把手,就有大量的功能可供使用!

于 2011-03-06T09:12:11.143 回答
4

绝对:查看 PostMessage() 和 SendMessage(),它们是 Windows API 的一部分:

http://msdn.microsoft.com/en-us/library/ms644944%28VS.85%29.aspx

http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx

具体来说,您可能想发送WM_KEYUP

http://msdn.microsoft.com/en-us/library/ms646281%28VS.85%29.aspx

于 2011-03-05T18:17:09.993 回答