【问题标题】:Giving input to a GUI application through another program通过另一个程序向 GUI 应用程序提供输入
【发布时间】:2012-09-04 02:39:17
【问题描述】:

我想知道的是,如何向封闭源代码且没有任何公共 API 的 GUI 应用程序提供输入。

为了更简洁,假设您打开纸牌并希望通过一个程序来玩它。或者,更简单地说,您有一个带有按钮的 GUI 应用程序,并且您想通过另一个程序单击它。

我知道这个问题有点含糊,但这是我能说的最好的表述。请帮助我进行一些编辑或一些 cmets 以使其更具体。

【问题讨论】:

  • 调查SendInput()。它可以用来模拟鼠标移动和按键操作。
  • @hmjd 谢谢。这就是我一直在寻找的。请发布答案以接受您的答案。如果您也了解如何在 Linux 中执行此操作,请将其包含在您的答案中。此外,如何获得对特定 GUI 应用程序的关注(当某些击键仅在应用程序处于焦点时才有效时很有用)会很有帮助。

标签: windows linux user-interface bots


【解决方案1】:

调查SendInput()。它可以用来模拟鼠标移动和按键操作。

要使用其 GUI 定位 Windows 应用程序,您可以使用 EnumWindows() 定位具有特定标题的窗口。这将提供一个窗口句柄。要赋予该窗口焦点,您可以:

  • 通过EnumWindows()获取窗口句柄
  • 使用GetWindowRect()获取窗口矩形的坐标
  • 使用SendInput()将鼠标移动到窗口范围内,并使用SendInput()模拟鼠标点击

我已经这样做过一次,而且很难做到正确。一旦你开始你的程序坐在你的手上:不要触摸鼠标或键盘。

我不知道如何在 Linux 上做这样的事情

【讨论】:

    【解决方案2】:

    假设它是 Linux 中的 X11 应用程序,您可以将进程连接到命名管道的一端,然后在管道的另一端回显 X-Input 事件。

    【讨论】:

      猜你喜欢
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      相关资源
      最近更新 更多