繁体   English   中英

SendKeys.send被阻止

[英]SendKeys.send is blocked

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

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

SendKeys.Send方法在Framework的3.0版中已更新,可以与Windows Vista及更高版本一起正常使用。 请参阅文档

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

您需要升级; Windows 7已包含3.5版。

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

MSDN文档中对于SendKeys.Send方法(至少对我来说)有一个相当奇怪的评论:

警告
如果您的应用程序打算与各种键盘一起在国际上使用,则使用Send可能会产生不可预测的结果,应避免使用。

我不明白该声明的原因,但也许这是您的行为所引起的(一个)原因?

在同一MSDN页面的最底部,它们进一步声明:

... SendKeys类易受时序问题的影响,有些开发人员不得不解决。 更新的实现仍然容易受到计时问题的影响,但速度稍快,可能需要更改解决方法...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM