2011-05-19 102 views

回答

4

SendKeys僅將按鍵組合發送到活動窗口。因此,如果您的C#應用​​程序在恰當的時間調用SendKeys函數,那麼當用戶擁有其他應用程序的文本框時,所有內容都可以正常工作。

問題當然是現實世界很少這麼完美。你不知道用戶何時會關注其他應用程序,當然不知道他們是否點擊了文本框控件。你也不會有任何辦法讓用戶告訴你的C#應用​​程序發送文本(如點擊一個按鈕),因爲爲了點擊按鈕,你的應用程序必須有前景焦點,因此而不是您想要接收鍵盤輸入的應用程序。

而這只是對的一些簡單概述,當您嘗試以這種方式進行UI自動化時,您會遇到一些潛在問題。這是非常脆弱的,並且可能容易導致用戶的一些意想不到的,令人憤怒的行爲。我強烈建議不要這樣做。更好的選擇是直接與其他應用程序通信,例如通過發送消息,而不是嘗試侵入性地控制其UI。

如果你絕對必須做到這一點,儘管相反的所有建議,最好的辦法是讓手柄要發送的文字窗口,然後發送一個WM_SETTEXT message。這當然會要求你從Win32 API中調用一些函數。有關示例代碼,請參閱answers to this question

相關問題