2012-04-14 14 views
0

我試圖從其他應用程序單擊Windows應用程序上的按鈕。基本上,我想從應用程序A的代碼中點擊應用程序B的按鈕。如何列出應用程序的所有元素?

我可以使用winapi findWindow來獲取處理程序。問題是我不知道應用程序B上的按鈕名稱。是否可以列出應用程序的所有名稱或ID?

我正在使用c#來實現它。

+0

@Arion //目前爲止沒有。我試圖谷歌,一無所獲。我知道這個問題可能不適合這裏,因爲我沒有任何源代碼,但是...我不知道如何解決這個問題。任何建議,將不勝感激.. – Moon 2012-04-14 22:10:05

回答

2

因爲你在看建議(這真的是一個非常普遍的問題,它可能或可能不工作取決於其他應用程序/窗口是什麼,它是例如瀏覽器或第三方應用程序等,它是否支持自動化)

看看這個密切相關的答案(它可能是重複的,但你有點'尋找'仍然可能注意到)。

Accessing Elements from Other Processes

而且這一項就如何 '訪問' 其他應用程序的 '輸入'
Pinvoke SetFocus to a particular control

+0

NSGaga //謝謝你的帖子! – Moon 2012-04-14 22:15:16

+0

@Moon np - 你最好的選擇是使用[UI Automation](http://msdn.microsoft.com/en-us/library/ms747327.aspx)。或可訪問性(舊版本),仍然沒有保證。 – NSGaga 2012-04-14 22:16:37

2

我沒有測試過這一點。但它看起來像一個充滿魅力的庫房。也許有一些功能可以使用。它被稱爲White。這僅僅是一個例子:

Application application = Application.Launch("foo.exe"); 
Window window = application.GetWindow("bar", InitializeOption.NoCache); 

Button button = window.Get<Button>("save"); 
button.Click(); 
+0

肯定呢,雖然應該給一些測試 – NSGaga 2012-04-14 22:23:21

1

您可以使用工具,如間諜++(包含在任何Visual Studio除了速成版),以查找姓名和類按鈕,然後使用這些信息作爲FindWindow函數的參數()。

+0

太棒了! Spy ++似乎非常有用 – Moon 2012-04-14 23:13:33

相關問題