2011-04-05 114 views
4

我需要控制一些沒有API和非常有限的命令行參數的第三方應用程序。 所以我需要使用.net和C#來模擬用戶交互。如何控制沒有API的第三方應用程序?

我需要做的:

  • 啓動應用程序(這工作)
  • 輸入字符串轉換成相應的編輯 領域
  • 按下按鈕
  • 額外的獎勵是隱藏應用程序窗口

可以這樣做,怎麼樣?

非常感謝。


編輯: 你怎麼看待AutoIt的工具?

回答

7

您可以使用White來實現此目的。

它使您能夠以編程方式模擬用戶與Win32,WinForms,WPF,Silverlight和SWT應用程序的交互。我多年前就使用它,它首先可以在WinForms應用程序上自動化一些簡單的煙霧測試,並取得巨大成功。

(警告:這是根據我的使用前一陣子,所以它可能是現在略有不同)

我創造了一些代碼,啓動我的應用程序,按名稱查找一系列的控制。一旦找到,每個控件都可以被操縱(例如輸入文本,點擊按鈕等)。要查找控件的名稱,請使用諸如Spy ++(Win32),UISpy(WinForms)或Snoop(WPF)之類的軟件來檢查正在運行的應用程序。

2

Theres也是UI自動化API,對於這項任務來說,這將非常容易掀起。 這個鏈接會給你一個支持每種控件類型的想法:UI Automation Control Types。 您可以使用控件名稱,標題或資源ID來獲取其句柄,並執行所需操作。 點擊一個按鈕,可以像抓住把手,一樣簡單:

AutomationElement control = AutomationElement.FromHandle(controlHandle); 
InvokePattern ip = (InvokePattern)control.GetCurrentPattern(InvokePattern.Pattern); 
ip.Invoke(); 

我有很好的成功,與此有關的所有.NET窗口,並從原生世界控制99%