【问题标题】:AutoIT ControlSend Modifiers InconsistentAutoIT ControlSend 修饰符不一致
【发布时间】:2014-11-06 01:40:24
【问题描述】:

我在 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”。

我需要能够设置这些脚本并让它们在不受监控的情况下持续运行,因此让它偶尔键入明显不是它应该发送的字符使其成为一个不可行的解决方案。

我可以做些什么来使发送带有正确修饰符的正确字符更加一致?

【问题讨论】:

标签: autoit


【解决方案1】:

根据我的经验,AutoIt 有时会弄乱发送键,但前提是它们会一个接一个地快速发送。

函数 ControlSend 有一个标志,就在您希望它发送的字符串之后,这使得 AutoIt 可以发送原始密钥或不发送密钥。

ControlSend ( "title", "text", controlID, "string" [, flag = 0] )

标记会改变“键”的处理方式:

0 =(默认)文本包含特殊字符,例如 + 表示 SHIFT,{LEFT} 表示左箭头。

1 = 原始发送密钥

对于 Ctrl.+o 的问题,试着把它改成这样:

ControlSend ( "title", "", 0, "^{o}")

希望这会有所帮助:)

【讨论】:

  • 是说设置 flag=1 可以防止我间歇性看到的案例错误吗?随机大小写变化似乎并不围绕特殊字符,它们似乎只是在我的文本中大小写发生变化时出现。我会试试看^{0} 是否比^0 效果更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 2011-08-15
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多