SendKeys.Send有时输出重复字符的问题

返回
Author Avatar
钢翼
2019-09-19
编程
277

开发时,使用SendKeys.Send出现调用1次,输出重复字符的问题。问题在一些机子上会必现。

解决方法在app.config增加以下配置

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

参照https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.sendkeys?view=netframework-4.6.1

SendKeys 类已更新为 .NET Framework 3.0,从而可用于在 Windows Vista 上运行的应用程序。 Windows Vista 增强的安全性(称为用户帐户控件或 UAC)可避免以前的实现按预期运行。

SendKeys 类容易遭受某些开发人员不得不解决的计时问题。 更新后的实现仍然容易遇到计时问题,但速度稍微快一些,并且可能需要更改解决方法。 SendKeys 类先尝试使用以前的实现,失败后再使用新的实现。 因此, SendKeys 类在不同操作系统上的运行方式可能不同。 此外,当 SendKeys 类使用新的实现时, SendWait 方法不会等到消息被处理后才将其发送至其他进程。

如果如论使用何种操作系统,你的应用程序均依赖于一致的行为,则可通过将以下应用程序设置添加至 app.config 文件强制执行 SendKeys 类以使用新的实现。

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

若要强制执行 SendKeys 类以使用以前的实现,请改用 "JournalHook" 值。