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