如何在Win32中操作键盘输入?

时间:2011-10-16 13:45:41

标签: c++ winapi input

或者澄清这个问题,我怎么能让Windows认为我碰到了一把钥匙,当我真的没有?我知道我可以使用SendMessage并在那里指定输入,但是不仅我的应用程序会收到它吗?我希望控制所有接收“假”输入的应用程序。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您所描述的伪造输入是由SendInput功能实现的。输入转到具有输入焦点的线程。

答案 1 :(得分:1)

即使在其他进程中,您也可以SendMessage到任何您想要的窗口。您甚至可以使用HWND_BROADCAST将其发送到系统上的每个级别窗口。但那是你真正想要的吗?如果您只对特定程序感兴趣,可以使用FindWindow获取其窗口句柄,然后仅将消息发送到该窗口。

请注意,如果您想要做的只是将一个简单的击键注入另一个进程,那么SendInput确实是可行的方法。如果您想发送一些全局键盘快捷键,那么谁拥有焦点并不重要。如果您想使用SendInput将相同的输入发送到多个窗口,则必须遍历窗口列表,并且对于每个窗口,首先设置焦点然后发送输入。