0

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

4

2 回答 2

4

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

SendKeys.Send方法已在 Framework 3.0 版中进行了更新,以便在 Windows Vista 和更新版本中正常工作。请参阅文档

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

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

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

于 2011-01-12T06:41:54.607 回答
0

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

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

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

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

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

在我看来,这SendKey是在任何情况下都应避免的功能。

于 2011-01-12T06:34:46.910 回答