2011-01-12 138 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是为了避免在所有情况下的功能。