SendKeys.send 被阻止

发布于 2024-10-11 10:04:18 字数 176 浏览 2 评论 0原文

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

I have C# application that uses Sendkeys.send to send text to other applications.
When executed on windows 7 after some time the Sendkeys stop responding and doesn't send any text. It never happens on windows XP.
I suspected the anti virus but it happen also when I'm running with no anti virus.
Any ideas what can cause it?
Thank you for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伴随着你 2024-10-18 10:04:19

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

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

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

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

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

What version of the .NET Framework are you compiling against? If you're still using a version prior to 2.0, you are most likely experiencing compatibility problems in Windows 7 as a result of UAC's enhanced security model.

The SendKeys.Send method was updated in version 3.0 of the Framework to work properly with Windows Vista and newer. See the documentation:

The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on Windows Vista. The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

You need to upgrade; version 3.5 is already included with Windows 7.

Otherwise, P/Invoking the SendMessage function exposed by the Windows API is an option if you need to send data to other applications. Check pinvoke.net for the declaration you'll need to call this in C#.

梦过后 2024-10-18 10:04:19

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

注意
如果您的申请是
旨在供国际使用
多种键盘,使用Send
可能会产生不可预测的结果
应该避免。

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

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

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

在我看来, SendKey 是一个在所有情况下都应该避免的函数。

There is a (for me, at least) rather strange remark on the MSDN documentation for the SendKeys.Send method:

Caution
If your application is
intended for international use with a
variety of keyboards, the use of Send
could yield unpredictable results and
should be avoided.

I do not understand the reason for the statement, but maybe this is (one) cause for the behaviour you ecperience?

At the very bottom of the same MSDN page, they further state:

...The SendKeys class is susceptible to
timing issues, which some developers
have had to work around. The updated
implementation is still susceptible to
timing issues, but is slightly faster
and may require changes to the
workarounds...

Seems to me that SendKey is a function to avoid under all circumstances.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文