2010-03-05 85 views
2

我的目標是從VB.NET控制應用程序。沒有API,我沒有源代碼,只有編譯後的EXE文件。有沒有辦法找到打開的應用程序,在應用程序中找到一個按鈕,點擊一個按鈕,並知道它被點擊?有沒有辦法在應用程序中讀取文本框的內容?有沒有辦法從VB.NET控制第三方EXE文件?

+0

你將會很難完成所有這些工作,但我相信它可以完成。 – 2010-03-05 02:00:56

回答

4

是的,對於Windows   Vista(或Windows   7或Windows Server 2003及更高版本),有「UI Automation」API。

有託管選項; System.Windows.Automation是.NET 3.0中的一部分,作爲WPF的一部分...儘管System.Windows.Automation作爲WPF的一部分發布,但它並不要求目標應用程序使用WPF。

你可以閱讀更多:

0

是的,但您將不得不求助於使用本地API調用,例如EnumWindowsEnumChildWindows。看看How To Enumerate Windows Using the Win32 API。它適用於Visual Basic 6.0,但概念相同。

+0

有一些用於UI自動化API的託管代碼包裝器。 – Cheeso 2010-03-05 02:03:28

+0

據我所知,它需要WPF。可能是錯誤的。 – 2010-03-05 02:04:47

+0

有趣...我一直在尋找這個一段時間,我從來沒有遇到過這個。你知道VB.Net中的任何樣本嗎? – ajl 2010-03-05 02:06:36

1

是的,你可以,但首先它可能會更易於使用「AutoIt」爲原型設計的腳本首先

  • CodeProject article #1節目找到應用程序。找到該應用程序窗口的句柄,通過該窗口的子控件枚舉,具體查找該文本框以及該按鈕......一旦AutoIt原型工作,然後深入實際編碼,並有可能使用P/Invoke' s到枚舉並找到窗口,得到它的手柄,就可以進行自動化...

    看一看從堆棧溢出發佈Calling SendMessage (P/Invoke) keeps crashing在C#中的樣本。 OP正在嘗試訪問第三方窗口應用程序,提取文本並在其程序中使用該文本......請注意,在給定鏈接中,如何使用「FindWindow」遍歷主進程窗口的子窗口。

  • 相關問題