SendKeys.Send有时输出重复字符的问题
钢翼
编程
开发时,使用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" 值。