网上菜鸟 发表于 2010-5-21 03:45:25

AutoIT如何监视多个窗口出现?

本帖最后由 网上菜鸟 于 2010-5-22 06:00 编辑

有多个标题、正文等内容都不同的窗口不定时的弹出,想用AutoIT自动监视并关闭这些窗口。
如果有5种窗口,是不是就得写5个脚本来运行监视?
能否在1个脚本同时监视5种窗口?

虽然得到的方法不是很理想,还是先设置为已结局吧。

期待AutoIT新版本加入窗口组操作功能。

例如:
定义若干个标题和正文都不相同的窗口信息到数组中
然后winwait、winkill等窗口命令可以对数组中定义的任一窗口操作。

sensel 发表于 2010-5-21 04:01:49

AdlibRegister("KillWindow", 500)
......

Func KillWindow()
        If WinExists("窗口1", "文本1") Then
                WinKill("窗口1", "文本1")
        ElseIf WinExists("窗口2", "文本2") Then
                WinKill("窗口2", "文本2")
        ElseIf WinExists("窗口3", "文本3") Then
                WinKill("窗口3", "文本3")
        ElseIf WinExists("窗口4", "文本4") Then
                WinKill("窗口4", "文本4")
        ElseIf WinExists("窗口5", "文本5") Then
                WinKill("窗口5", "文本5")
        EndIf
        Return
EndFunc   ;==>KillWindow

网上菜鸟 发表于 2010-5-21 06:41:06

回复 2# sensel

   谢谢。。。

    这样做是可以,但是效率有点低,还是winwait接winkill来得高效,只是一个winwait脚本就停着等待了,不能同时多个winwait。

Kennylam 发表于 2010-5-23 02:20:04

受教,谢谢!!!!

lanfengc 发表于 2010-5-23 09:13:30

While 1
        Local $WinlistArray=WinList()
        For $i=1 To $WinlistArray Step 1
                Switch $WinlistArray[$i]
                        Case "无标题 - 记事本"
                                ProcessClose("notepad.exe")
                        Case "计算器"
                                WinClose("计算器")
                EndSwitch
        Next
WEnd
给你, 这个想必就是你要的了。

网上菜鸟 发表于 2010-5-25 02:38:35

本帖最后由 网上菜鸟 于 2010-5-25 02:43 编辑

回复 5# lanfengc


    这个还不是我要的,我在AHK里找到了我要的,这里并不是说AU3不好。
AHK的代码是:
menu, tray, noicon
GroupAdd, KillGroup , 标题1,正文1。
GroupAdd, KillGroup , 标题2,正文2。
GroupAdd, KillGroup ,标题3
GroupAdd, KillGroup , 标题4,正文4。
loop {
WinWait,ahk_group KillGroup
WinKill
}


这样只要一个winwait就可以响应KillGroup里定义的4个窗口中的任意窗口。响应速度不是前面介绍的方法所能比的。只是AHK的语法似乎不怎么严谨,我不大习惯,或者说AU3已经先入为主的在我的头脑里占据了主要的地位。
页: [1]
查看完整版本: AutoIT如何监视多个窗口出现?