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