SendKeys.send被阻止

时间:2011-01-12 06:29:59

标签: c# .net windows winforms sendkeys

我有C#应用程序,它使用Sendkeys.send将文本发送到其他应用程序。 在一段时间后在Windows 7上执行时,Sendkeys停止响应并且不发送任何文本。它永远不会发生在Windows XP上。 我怀疑是反病毒,但是在我没有反病毒的情况下也会发生。 有什么想法会导致它吗? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

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

在框架3.0版中更新了SendKeys.Send方法,以便在Windows Vista及更高版本中正常使用。请参阅documentation

  

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

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

否则,如果您需要将数据发送到其他应用程序,则可以选择P /调用Windows API公开的SendMessage function。检查pinvoke.net是否需要在C#中调用此声明。

答案 1 :(得分:0)

MSDN documentation for the SendKeys.Send方法有一个(至少对我而言)相当奇怪的评论:

  

<强>注意
  如果您的申请是   打算用于国际用途   各种键盘,使用发送   可能会产生不可预测的结果   应该避免。

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

在同一MSDN页面的最底部,他们进一步陈述:

  

... SendKeys类很容易受到影响   时间问题,一些开发人员   不得不解决。更新了   实施仍然容易受到影响   时间问题,但稍微快一些   并可能需要更改   变通...

在我看来,SendKey是在所有情况下都要避免的功能。