2012-01-07 79 views
1

在我當前的項目中,我需要將密鑰發送到我已啓動的進程(儘管這個進程沒有任何控制權,但它是第三方)。現在要獲取這些命令,EA的Origin始終在其主屏幕上(即在登錄後完全加載)。如何找到一個進程是否已完全加載

現在,我不知道我該如何檢測何時達到這一點。我嘗試過等待輸入空閒,但輸入空閒在我可以發送密鑰之前已經很長時間實現了。

有沒有我可以使用,當該程序已經達到這種狀態檢測一些其他的方法?我想也許我可以檢測(如果)應用程序何時自己發出信號,但我不知道該如何發現它是否完全發出信號,或者發出什麼聲音來聽取它。

任何援助非常感謝!

+2

由於您已經觀察到的原因,這種類型的UI自動化特別細膩,極易出錯。我不強烈建議您研究其他方法,而不是一起討論包含'SendKeys'的脆弱解決方案。 – 2012-01-07 13:05:52

+0

這不是'SendKeys'我遇到了麻煩,那只是我想如何處理與流程溝通命令的一個方面(我可能會使用pinvoke)。我只是試圖找到一種有效瞭解過程所處狀態的方法。我同意,雖然這將是一個脆弱的解決方案,如果有的話,一起入侵。 – Frohman 2012-01-07 13:58:48

回答

1

如果主窗口具有鮮明的標題你可以enumerate windows反覆,等到出現過程的主要窗口。

順便說一句 - 我曾與發送鍵(有時鍵沒有打通)一些不好的經歷,我發現將發送鍵與閱讀的過程中UI(再次 ​​- 枚舉窗口)效果最好。

1

是否有應用程序的任何視覺指示器,如特定標籤的文本,顯示了當它準備好接受輸入?如果是這樣的話,您可以使用windows accessibility API(通過P/Invoke)來觀察這一點並將其用作觸發器。也可以使用API​​來監視實際輸入控件何時獲得焦點。您甚至可以使用API​​而不是SendKeys來獲得更可靠的交互。

相關問題