我正試圖使用C#/ .NET 4.0自動化外部應用程序的GUI。確定應用程序是否被阻止/忙碌?
正在自動化(AUT)的應用程序是一個VB6應用程序。
在做一個動作,或者點擊一個按鈕時,AUT有時會花費大量的時間等待DB迴應。當應用程序正在等待數據庫結果時,應用程序本身是空閒的(不會註冊太多CPU使用率),但它被阻止(您不能單擊或與其交互)。
- 所以到目前爲止,我試圖看着鼠標指針(沙漏)作爲指標,但有時該應用被堵塞,但光標是正常的。所以這是不可靠的。我試過看過AUT的TotalProcessorTime(這個措施,如果應用程序是IDLE或BUSY)的主要過程,但正如我所說,有時應用程序是IDLE,仍然被阻止。
所以我想磁帶到計算器人羣的經驗,看是否有人已經知道如何處理,以及/或者如果你有關於如何實現這一目標的任何想法。
感謝
編輯:
我一直在玩弄,只是發現了一些。
雖然AUT被阻塞,它沒有響應鍵盤或鼠標輸入。但是,如果我將WM_LBUTTONCLICK消息發送到窗口,我可以確認消息正在處理(以及UI更改)。
所以我猜他們是有意阻止應用程序,同時使DB調用。
UI是否被禁用?主UI線程是否在工作線程上阻塞?如果您嘗試與應用程序交互,您是否看到窗口重影? –
您無法與主用戶界面進行交互,但是我不認爲主用戶界面線程被阻止,因爲您嘗試與其交互時看不到任何「重影」。它只是沒有做任何事情。所有的控件/ UI仍然「啓用」。 – DanyO
使用Spy ++檢查主窗口是否被禁用。如果消息隊列正在被抽取,並且您無法調用UI操作,那麼我猜測,AUT中的某些內容必須被禁用。 –