SendKeys.send被阻止

我有C#应用程序使用Sendkeys.send发送文本到其他应用程序。 在Windows 7上执行一段时间后,Sendkeys停止响应并且不发送任何文本。 它从来没有发生在Windows XP上。 我怀疑反病毒,但是当我没有反病毒运行时也会发生。 任何想法可以导致它? 感谢您的帮助。

你正在编译什么版本的.NET Framework? 如果您仍然使用2.0之前的版本,则由于UAC增强的安全模型,您很可能会遇到Windows 7中的兼容性问题。

SendKeys.Send方法已在Framework的3.0版中更新,以便在Windows Vista及更新版本中正常运行。 请参阅文档 :

SendKeys类已针对.NET Framework 3.0进行了更新,以使其可用于在Windows Vista上运行的应用程序。 Windows Vista增强的安全性(称为用户帐户控制或UAC)可防止以前的实现按预期工作。

你需要升级; 版本3.5已经包含在Windows 7中。

否则,如果您需要将数据发送到其他应用程序,则P /调用由Windows API公开的SendMessage函数是一个选项。 检查pinvoke.net的声明,你需要在C#中调用这个。

SendKeys.Send方法的MSDN文档中有一个(至少对我来说)比较奇怪的注释:

警告
如果您的应用程序旨在用于各种键盘的国际使用,使用发送可能会产生不可预知的结果,应该避免。

我不明白这个陈述的原因,但是这也许是(一)你所经历的行为的原因?

在同一个MSDN页面的底部,他们进一步指出:

SendKeys类容易出现时序问题,一些开发人员必须解决这个问题。 更新后的实现仍然易受时间问题的影响,但速度稍快,可能需要更改解决方法…

在我看来, SendKey是一种避免在任何情况下的功能。