【问题标题】:Trouble Simulating Keystrokes模拟击键时遇到问题
【发布时间】:2012-10-10 13:20:24
【问题描述】:

我过去曾使用 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 值)。

【问题讨论】:

    标签: c# winapi keyboard


    【解决方案1】:

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

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

    【讨论】:

    • 哈哈——这正是我所需要的。我会接受的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    相关资源
    最近更新 更多