SendKeys 操作系统限制

SendKeys Operating System Limitations

SendKeys vbScript 方法是否存在与操作系统相关的复杂问题?我正在从 Windows XP 计算机上的 GE Cimplicity 4 项目升级到 Windows Server 2012 R2 虚拟机上的 GE Cimplicity 10 项目。

SendKeys 方法用于更改屏幕打开时的选项卡焦点。现在,无论使用 SendKeys 发送什么密钥,脚本都会无限期冻结。有没有人遇到过操作系统更改后 SendKeys 冻结的情况?

SendKeys “{TAB}”, 1

到目前为止我参考的文档:

http://proscada.ru/cimplicity/bce-lrf/lrfs/sendkeys.statement.htm

https://social.technet.microsoft.com/wiki/contents/articles/5169.vbscript-sendkeys-method.aspx

 SendKeys "{TAB}1"

字符串(即文本)必须用引号引起来。

问题已缩小到一个名为 "User Access Control (UAC)" 的较新的 Microsoft 安全功能,该功能从 Windows Vista 开始。需要关闭此功能才能使 sendKeys 命令与 Cimplicity 一起正常工作。

至于 Cimplicity 之外的 sendKeys 性能,sendKeys 有一些不同的实现,具体取决于时间和操作系统。要强制 sendKeys 仅使用一种实现来获得一致的计时(如果一致性是一个问题),您可以更新 app.config 文件以通过添加强制实现:

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

参考:

https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx