AutoIt 简单用法--窗口标题与文本(基础篇)
窗口标题与文本(基础篇)
当我们在编写用以实现自动化操作(通常是指窗口操作)的脚本的时候,经常要解决的一个问题就是如何(在众多窗口中)准确识别出目标窗口,一般来说我们把窗口的 标题(title) 作为它的ID,有时候只给标题还不够,这时就需要同时给出 标题及文本(text)。要获得某个窗口的标题是件很简单的事情(直接就可以看到),可以使用 AutoIt 提供的 AutoIt Window Info(窗口信息工具)。大多数窗口的标题都是显而易见的,例如系统自带的记事本程序(notepad.exe),它的标题是 无标题 - 记事本,并不难理解对吧?而且一般来说这就已经足以帮助我们完成自动化任务了。
注意:若作为参数传递到窗口函数的 窗口标题 和 窗口文本 都是空字符串""的话,则该函数的操作目标将会是当前激活的窗口(但设置了非默认的 窗口匹配模式(WinTitleMatchMode) 时除外)!
窗口标题及其文本是 大小写敏感(或者说是严格区分大小写)的。包括标点符号在内您必须确保它们是完全匹配的。为了避免在这种小问题上出错,您可以使用工具 Window Info 然后选中获得的标题或文本,按下 ctrl-c 复制之后就可以直接粘贴到脚本中使用了。
AutoIt 的大部分窗口函数都有窗口标题和文本参数,比如说下面的 WinWaitActive 函数。这个函数的功能是使脚本暂停执行并 一直等到 指定窗口出现且激活为止。
WinWaitActive ( "窗口标题", ["窗口文本"], [超时时间] )
其中 窗口标题 是必须指定的参数,而 窗口文本 和 超时时间 都是可选参数。不过也有些函数的 窗口文本 参数是必须指定的,如果想省略这个参数的话只需指定 "" (表示空字符串)作为参数即可。在参数 窗口文本 中指定一个空字符串或者干脆留空的话相当于告诉 AutoIt 任何文本都是有效的(反正只管标题匹配了就OK)。
下面以记事本窗口为例说明上面提到的函数的两种用法:
WinWaitActive("无标题 - 记事本")
以及
WinWaitActive("无标题 - 记事本", "")
如果我们打些字到该窗口上,比如说“这里是足以区分其它记事本窗口的文字”,则在 Window Info 的窗口上将会显示相关信息:
我们可以注意到 Window Info 已经 “看到” 了这个记事本窗口的标题及文本并显示出来了。记住,凡是 Window Info Tool 能“看到”的 AutoIt 也能“看到”(指能在脚本中使用)。现在我们得到的这些信息已经足以用来准确识别此窗口了(就算此时还打开了很多记事本窗口)。这时我们应该这么使用函数:
WinWaitActive("无标题 - 记事本", "这里是足以区分其它记事本窗口的文字")
窗口文本
作为参数使用的窗口文本必须是符合 AutoIt 的要求。一般来说有效的文本是指编辑框控件内的文本(比如像上面的“这里是足以区分其它记事本窗口的文字”),此外还可以使用下面这些文本:
- 按钮上的文本,比如 &Yes、&No、&Next、确定(&O) 等(“&”号后的字符将带有下划线)
- 对话框上的文本,比如 “是否要继续?”
- 其它控件上的文本
- 其它文本--我也不知道那是什么 :)
另外还有一个必须了解的技巧就是除了上面这些文本之外,很多程序窗口的标题会根据操作对象的不同而不同(通常会在默认标题后附加),因此把接在标题后的文本作为窗口文本参数使用也是可以的。
其实我们传递到窗口函数中的 窗口文本 参数是被 AutoIt 当作子串(substring)来处理的。还是以上面的记事本窗口为例,即使把“区分其它记事”作为窗口文本参数也是可以获得同样效果的。
前面提到的所有应用都是以在 默认 模式下操作为例的,AutoIt 还提供了其它几种 更高级 的方法,可能会稍微比这里的难一点 :)