Terence 发表于 2012-10-6 08:28:22

跳过获取到的窗口名

现在有相同类的窗口若干。

我用函数WinGetitle获取了文件A的窗口名。但和我定义的不匹配。

请问我如何跳过这个不匹配的文件A去获取下一个文件B的窗口名呢。

在简单一点,我如何获得了就跳过继续获取下一个呢。

Terence 发表于 2012-10-6 08:54:30

快来人呀 {:face (207):}

veket_linux 发表于 2012-10-6 11:26:42

假设 有 zxya.txtcba.txt 的 记事本 窗口

WinTitleMatchMode 设为2 = 标题的任意子串皆可匹配

用 WinList得到 "a.txt" 的一个数组

循环 对WinList返回的数组 元素 用 WinActivate ,WinGetTitle遍历
判断WinGetTitle 的返回值和你想要的 字符串比较一下.......

帮助上讲到
WinGetTitle("") 将返回当前激活窗口的标题.WinGetTitle 能对最小化窗口或隐藏窗口正常工作.若同时有多个窗口符合匹配条件则程序将获取最近被激活的窗口的标题.

所以 你要换一个窗口 来 WinGetTitle前要先用WinActivate把该窗口激活

rqwjqlje 发表于 2012-10-9 17:19:39

支持不得不顶一下楼主!

http://pimg.163.com/club/newclub/images/PP3.gif8错8错,支持~~~

















http://qb.lqualyn.com/images/sigline.gif
正旭这个品牌是名牌么

jingygr 发表于 2012-10-14 09:49:25

哈哈,我也刚好正用到这个list的。。。正在弄,可惜现在还不懂注册成服务的。

liongodmien 发表于 2012-10-14 13:22:51

WinWaitActive("", "")

881966 发表于 2012-10-15 16:38:59

参考一下努力学习中{:face (125):}

Neuis 发表于 2012-10-16 08:01:51

$Winname = WinList ()
While 1
   $uTitl = InputBox ("a","b")
    If @error = 1 Then
        Exit
    Else
        For $i = 1 To $Winname
                If $Winname[$i] <> "" And IsVisible($Winname[$i]) Then
                        WinActivate ($Winname[$i])
                        Sleep (1000)
                        $Titl = WinGetTitle ("")
                        If StringInStr ( $Titl, $uTitl) Then
                                        MsgBox (0,"",$Titl)
                                        ExitLoop
                        ElseIf $i = $Winname Then
                                        MsgBox (0,"","fail")
                                        ExitLoop
                        EndIf
                EndIf
        Next
    EndIf
WEnd

Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
      Return 1
    Else
      Return 0
    EndIf

EndFunc   ;==>不知道这能解决楼主的问题?
页: [1]
查看完整版本: 跳过获取到的窗口名