【问题标题】:How to send keystrokes/messages to Windows 7 with C++ and Windows API?如何使用 C++ 和 Windows API 向 Windows 7 发送击键/消息?
【发布时间】:2012-02-08 08:49:42
【问题描述】:

程序是否可以向 Windows 7(运行它的操作系统)发送击键或消息,以模拟用户在键盘上物理按下 Windows 键的效果,例如;在 C++ 中,使用 Windows API?

【问题讨论】:

    标签: c++ windows winapi sendmessage sendkeys


    【解决方案1】:

    SendInput 函数已经存在很长时间了,应该可以满足您的需要。

    【讨论】:

      【解决方案2】:

      初学者经常尝试将密钥发送到窗口,因为他们认为这是最简单的解决方案。肯定很容易回答说有可能。通常,在开发人员投入大量时间后,它会变得复杂。它复杂的一个原因是因为您必须确保控件(文本框或其他)具有焦点。然后你必须做一些事情来处理数据,比如按下一个按钮。您可能需要阅读该窗口来决定下一步该做什么。

      另一种方法是升级并尝试通过访问控件及其父级(窗口)来控制应用程序。所以换句话说,您可以将数据直接作为字符串放入文本框中,而不是通过在其中键入键。您可以向 wndow 发送 BN_CLICKED 通知消息,而不是向按钮发送回车键来单击按钮。你应该寻找方法来做那种事情。完全有可能。

      熟悉 Spy++;它是一个可以真正帮助您探索控件和窗口等的工具。

      【讨论】:

      • +1,但请注意,某些应用程序以意想不到的方式响应窗口消息,因此通常需要回退到使用击键。
      • 我同意没有简单的答案。我同意发送击键可能是一个很好的解决方案。我只是想强调,使用替代解决方案通常更容易、更可靠。最佳答案因每个应用程序而异。
      【解决方案3】:

      您可以使用SendInput 进行任何模拟输入,但是,您受应用程序完整性级别的约束(也就是说,您不能将输入注入到比您的级别更高的应用程序中)。

      【讨论】:

        猜你喜欢
        • 2011-05-22
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 2021-12-05
        • 2016-04-30
        • 1970-01-01
        相关资源
        最近更新 更多