1

我过去曾使用 WIN32API 调用来模拟击键而没有太多麻烦。即使是现在,从表面上看,它似乎也奏效了。我正在使用 Win32 SendMessage 调用将 WM_KEYDOWN、WM_CHAR、WM_KEYUP 消息发送到记事本实例。

果然,我发送的任何内容都会出现在记事本中。

但是在使用 Spy++ 检查消息时;我注意到我发送的按键与我实际键入的按键或使用 Windows 内置屏幕键盘创建的按键明显不同。

在 Spy++ 中,我的单个 WM_KEYDOWN 生成两行:

<001> 00234 S WM_KEYDOWN nVirtKey:'W'....
<002> 00234 R WM_KEYDOWN

真正按下 W 键(或使用 OnScreenKeyboard)只会生成一行

<003> 00234 P WM_KEYDOWN nVirtKey:'W'...

如果我展开这些消息,我可以看到“S”代表已发送,R -“已接收”,P -“已发布”。

谁能告诉我如何以编程方式更准确地模拟键盘输入?我已经匹配了消息的其余部分(包括 lParam 值)。

4

1 回答 1

2

我认为您将需要使用PostMessage而不是SendMessage. 除了将消息传递给接收者的方式之外,它几乎相同。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944%28v=vs.85%29.aspx

于 2012-10-19T21:12:55.470 回答