2011-01-12 195 views
0

我有使用Sendkeys.send向其他應用程序發送文本的C#應用​​程序。 在Windows 7上執行一段時間後,Sendkeys停止響應並且不發送任何文本。它從來沒有發生在Windows XP上。 我懷疑反病毒,但它也發生在我沒有反病毒運行時。 任何想法可以導致它? 謝謝你的幫助。SendKeys.send被阻止

回答

4

您正在編譯什麼版本的.NET Framework?如果您仍然使用2.0之前的版本,則由於UAC增強的安全模型,您很可能會遇到Windows 7中的兼容性問題。

SendKeys.Send方法已在框架的3.0版中更新,以便與Windows Vista及更新版本正常協作。請參閱documentation

已將SendKeys類更新爲.NET Framework 3.0,以使其可用於在Windows Vista上運行的應用程序。 Windows Vista增強的安全性(稱爲用戶帳戶控制或UAC)可防止以前的實施按預期工作。

您需要升級;版本3.5已包含在Windows 7中。

否則,如果您需要將數據發送到其他應用程序,則Windows/API提供的P /調用SendMessage function是一個選項。檢查pinvoke.net您需要在C#中調用此聲明。

0

上有MSDN documentation for the SendKeys.Send方法(對我來說,至少),而奇怪的話:

注意
如果您的應用程序旨在 國際使用與 各種鍵盤,在中使用Send 可能會產生不可預知的結果,應避免使用 。

我不明白聲明的原因,但也許這是(一)導致你經歷的行爲?

同時MSDN頁面的最底部,他們進一步狀態:

... SendKeys類易受 時序問題,其中有些開發商 不得不解決。更新 實現仍然容易受到 時間問題,但稍快 ,可能需要改變 解決辦法...

在我看來,SendKey是爲了避免在所有情況下的功能。