找回密码
 加入
搜索
查看: 1242|回复: 2

关于检查某窗口是否激活

[复制链接]
发表于 2010-2-3 20:45:46 | 显示全部楼层 |阅读模式
本帖最后由 iori2882 于 2010-2-3 23:14 编辑

比如说:一个程序有1 2 3  4 5  6 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窗口存在不存在呢?
我语文不行 表达的不好 大家见谅

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 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
 楼主| 发表于 2010-2-3 23:13:52 | 显示全部楼层
没看太明白,先琢磨下我以前写的一个函数
afan 发表于 2010-2-3 21:05



  谢谢你 用WinWaitNotActive应该能解决~~~谢谢你的帮助
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-1-12 08:46 , Processed in 0.075367 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表