检查WinList()是否包含某个标题

时间:2017-09-08 14:23:57

标签: autoit

我使用WinList()列出所有打开的窗口,以获取AutoIt中的窗口标题和-handle。

我想检查结果数组是否包含特定标题。做这个的最好方式是什么?没有WinList().Contains("TitleName")或类似的东西。

Local $aList = WinList()    ;Gets a list of Window Titles and IDs

3 个答案:

答案 0 :(得分:2)

好的,我现在明白了:

For $i = 1 To $aList[0][0]
    If $aList[$i][0] = "Title/String you search for" Then
        MsgBox($MB_SYSTEMMODAL, "", "MessageBox shows this text if title is in list.")
    EndIf
Next

答案 1 :(得分:1)

您也可以使用类似于您所写的内容。

#include <Array.au3>
Opt("WinDetectHiddenText", 0) ;0=don't detect, 1=do detect
Opt("WinSearchChildren", 0) ;0=no, 1=search children also
Opt("WinTextMatchMode", 1) ;1=complete, 2=quick
Opt("WinTitleMatchMode", 1) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
Local $title = 'AutoIt Help (v3.3.14.2)'
Local $aList = WinList()
;~ _ArrayDisplay($aList)
Local $iIndex = _ArraySearch($aList,$title)
WinActivate($aList[$iIndex][1], '')

答案 2 :(得分:0)

窗口存在吗?

  

我正在列出所有打开的窗口...我想检查…是否包含特定标题。最佳方法是什么?

根据Documentation - Function Reference - WinExists()

  

检查是否存在指定的窗口。

示例。

Global Const $g_sWndTitle = 'Window title here'

If WinExists($g_sWndTitle) Then WinFlash($g_sWndTitle)

检索窗口句柄,-文本和-title

句柄

  

“…获取窗口标题和-handle …”

根据Documentation - Function Reference - WinGetHandle()

  

获取窗口的内部句柄。

示例:

Global Const $g_sWndTitle = 'Window title here'
Global       $g_hWnd

If WinExists($g_sWndTitle) Then

    $g_hWnd = WinGetHandle($g_sWndTitle)
    WinFlash($g_hWnd)

EndIf

文字

根据Documentation - Function Reference - WinGetText()

  

从窗口中检索文本。

示例:

Global Const $g_sWndTitle = 'Window title here'

If WinExists($g_sWndTitle) Then

    WinFlash($g_sWndTitle)
    ConsoleWrite(WinGetText($g_sWndTitle) & @CRLF)

EndIf

标题

同样,WinGetTitle()