通过另一个程序向GUI应用程序提供输入

时间:2012-09-11 07:48:43

标签: windows linux user-interface bots

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

为了更简洁,让我们说你打开纸牌并希望通过一个程序来播放它。或者,为了实现基础,你有一个带有按钮的GUI应用程序,你想通过另一个程序点击它。

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

2 个答案:

答案 0 :(得分:1)

调查SendInput()。它可用于模拟鼠标移动和按键。

要使用其GUI找到Windows应用程序,您可以使用EnumWindows()查找具有特定标题的窗口。这将提供一个Window句柄。要关注该窗口,您可以:

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

我曾经做过一次这样的事情,并且令人愤怒地难以做到。一旦你开始你的程序坐在你的手上:不要触摸鼠标或键盘。

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

答案 1 :(得分:0)

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