2012-09-11 53 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-輸入事件沿着管道的另一端。

相關問題