2012-09-11 27 views
0

我想知道的是,如何为封闭源代码的GUI应用程序提供输入,并且没有任何公共API。通过另一个程序给GUI应用程序提供输入

为了更加简明扼要,假设您打开纸牌并希望通过程序来播放纸牌。或者,甚至到基础,你有一个按钮的GUI应用程序,你想通过另一个程序点击它。

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

+1

调查['SendInput()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx)。它可以用来模拟鼠标移动和按键。 – hmjd

+0

@hmjd谢谢。那正是我正在寻找的。请张贴答案接受你的答案。如果您也有关于如何在Linux中执行此操作的知识,请将其包含在您的答案中。此外,如何专注于特定的GUI应用程序(当某些击键仅在应用程序处于焦点时才有用)将会很有帮助。 – coredump

回答

1

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

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

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

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

我对如何做这样的事在Linux上没有知识)

0

假设它在Linux上的X11应用程序,你可以在过程连接到命名管道的一端,然后回显X-输入事件沿着管道的另一端。

相关问题