iori2882 发表于 2010-2-3 20:45:46

关于检查某窗口是否激活

本帖最后由 iori2882 于 2010-2-3 23:14 编辑

比如说:一个程序有1 2 34 56 7 8个窗口,
我对1窗口进行操作: WinWaitActive() send()
然后 2窗口是个安装进度条,系统自动操作的
4窗口和5窗口第一次安装这个程序弹出 只要是装过这个程序的系统就不弹出

现在我的问题就是 我怎么能对未知出现不出现的4窗口和5窗口进行操作
如果用winactive 对1窗口进行操作后就得用
WinWaitActive() send()(先对1窗口操作)
if winactive then(如果4窗口是激活状态 那么)
但是winactive返回句柄,不等待,在我对4窗口进行操作的时候 中间跨过了2 和 3窗口
所以不好用
如果我用
WinWaitActive() send() (先对1窗口操作)
if winwaitactive then (等待4窗口出现)
如果不出4窗口和5窗口 他就会一直等待下去,程序就卡那了
如果用
WinWaitActive() send()(先对1窗口操作)
if winwaitactive("","" , 5) then(等待4窗口,无论出现不出现 5秒后 THEN)
如果这么用等5秒后 无论怎样都继续执行 就会导致程序的不稳定 语句串行,THEN后面的语句容易引起后面的语句
有没有什么办法 能直接跨国 2窗口 和3窗口 直接去判断4 窗口和 5窗口存在不存在呢?
我语文不行 表达的不好 大家见谅

afan 发表于 2010-2-3 21:05:28

没看太明白,先琢磨下我以前写的一个函数Func _WinWaitActive($exe, $title, $text, $timeout = 3000)
        Local $ii = 0
        While 1
                If ProcessExists($exe) = 0 Then Return 0
                If WinActive($title, $text) Then Return 1
                Sleep(100)
                $ii += 1
                If $ii = $timeout / 100 Then Return -1
        WEnd
EndFunc   ;==>_WinWaitActive

iori2882 发表于 2010-2-3 23:13:52

没看太明白,先琢磨下我以前写的一个函数
afan 发表于 2010-2-3 21:05 http://www.autoitx.com/images/common/back.gif


谢谢你 用WinWaitNotActive应该能解决~~~谢谢你的帮助
页: [1]
查看完整版本: 关于检查某窗口是否激活