2011-03-10 68 views
2

我使用Input Simulator庫來模擬使用C#的另一個應用程序的輸入,它使用SendInput API調用。有誰知道是否有一種方法可以監視外部應用程序的Windows消息隊列,以查看這些消息是否已被處理?例如,假設我想將單詞「Hello」的擊鍵發送到記事本,但我不想讓我的應用程序繼續,直到記事本收到並處理了輸入並且出現了單詞「Hello」在記事本窗口中。一旦按鍵消息不再存在於記事本的消息隊列中,我們就會知道發生了這種情況,但我無法弄清楚如何找出答案。使用SendInput時,如何知道接收窗口何時接收並處理了消息?

我正在使用.NET SendKeys類和使用SendWait,但這似乎不穩定,並導致外部應用程序偶爾凍結,所以經過數週的嘗試修復,我正在尋找一種新的方法。

非常感謝

回答

2

你不能。調用SendInput最終會導致發佈異步傳遞的消息。

爲什麼假輸入記事本時,你可以直接發送文本到編輯窗口?它不僅會更簡單,而且更健壯和同步。

+0

記事本只是一個示例應用程序。我將它用作自動化測試過程的一部分,並且希望以儘可能高的水平模擬事物,確保應該觸發的所有事件都被觸發。因此,我模擬鼠標移動,鼠標點擊,我也想正確地使它正常工作。這聽起來像我可能只需要堅持一個Thread.Sleep()。 – 2011-03-10 18:49:34