我在Windows 7上遇到了AutoIT的ControlSend功能的一个奇怪问题,所以我希望有人可以提供帮助。
我写过FUSE文件系统,它通过Samba与Windows共享。我尝试使用AutoIT在Windows上自动执行文件系统测试,以便使用各种不同的应用程序在文件系统上编写和修改文件。
当我第一次开始测试时,我正在使用"发送"发送击键的方法,但我发现其他应用程序偶尔会窃取焦点,我的测试会惹恼。我希望使用ControlSend可以让我的测试继续进行,即使焦点被盗了。我遇到的问题是,有时修改键(如Shift和Control)不会按原样发送。
例如,如果我使用
ControlSend("Open", "", "Edit1", "Z:\test.txt")
在打开的对话框中设置路径,我偶尔会看到文本出现为" z; | test.txt",显然已经将Shift键反转了几个字符。
在另一种情况下,如果我发送
ControlSend($hWnd, "", "Edit1", "^o")
发送" Ctrl + o"在记事本窗口中,我偶尔会发现,而不是打开“打开”对话框,AutoIT只需键入字母" o"进入记事本文本字段。
我需要能够设置这些脚本并让它们在不受监视的情况下持续运行,因此偶尔键入明确不是它应该发送的字符会使它成为一种不可行的解决方案。
我能做些什么来使用正确的修饰符发送正确的角色更加一致吗?
答案 0 :(得分:2)
根据我的经验,AutoIt有时会混淆发送密钥,但只有当它们快速发送时才会发送。
函数ControlSend有一个标志,就在你希望它发送的字符串之后,这使得AutoIt可以发送或不发送密钥。
ControlSend ( "title", "text", controlID, "string" [, flag = 0] )
标记会更改"键"处理完毕:
0 =(默认)文本包含特殊字符,如+表示SHIFT,{LEFT}表示左箭头。
1 =密钥是原始发送的
对于Ctrl。+ o问题,请尝试将其设为:
ControlSend ( "title", "", 0, "^{o}")
希望这有助于:)