标题: [问题求助] vbs判断是否存在指定窗口 [打印本页]
作者: Heykuz 时间: 2015-11-27 23:21 标题: vbs判断是否存在指定窗口
本帖最后由 pcl_test 于 2016-10-14 04:02 编辑
原由http://www.bathome.net/thread-23579-1-1.html- 'VBS 查找含有“百度”文字的窗口,激活并提示 By yu2n
- '在5秒内查找含有“百度”文字的窗口,
- ' 若存在,则激活并提示 "找到一个含有“百度”文字的窗口!"
- ' 若不存在,则提示 "找不到含有“百度”文字的窗口!"
- Const sTitle = "百度" ' 查找窗口名称
- Const nTimeOut = 5 ' 指定超时时间
- Dim dtStart, bFind
- dtStart = Now()
- Do While DateDiff("s", dtStart, Now()) < nTimeOut
- WScript.Sleep 200
- If CreateObject("WScript.Shell").Appactivate(sTitle) Then
- bFind = True ' 做标记-已找到
- Exit Do
- End If
- Loop
- If bFind Then
- Msgbox "找到一个含有“百度”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
- & " 秒。", vbSystemModal+vbInformation, WScript.ScriptName
- Else
- Msgbox "找不到含有“百度”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
- & " 秒。", vbSystemModal+vbCritical, WScript.ScriptName
- End If
复制代码
我想搜索条件包含其它字符,例如百度 或 谷歌 或 必应
Const sTitle = "百度 or 谷歌 or 必应" '这样试了不行
该如何写呢。
作者: yu2n 时间: 2015-11-28 11:07
回复 1# Heykuz
使用Split对字符串划分、生成数组,使用For Each遍历这个数组。- Const sTitle = "百度|谷歌|必应" ' 查找窗口名称,多个名称使用分割号“|”隔开
- Const nTimeOut = 5 ' 指定超时时间
- Dim dtStart, bFind, o
- dtStart = Now()
- Do While DateDiff("s", dtStart, Now()) < nTimeOut
- WScript.Sleep 200
- For Each o In Split(sTitle,"|") '遍历分组
- If Trim(o) <> "" Then
- If CreateObject("WScript.Shell").Appactivate(Trim(o)) Then
- bFind = True ' 做标记-已找到
- Exit For
- End If
- End If
- Next
- If bFind = True Then Exit Do
- Loop
- If bFind Then
- Msgbox "找到一个含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
- & " 秒。", vbSystemModal+vbInformation, WScript.ScriptName
- Else
- Msgbox "找不到含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
- & " 秒。", vbSystemModal+vbCritical, WScript.ScriptName
- End If
复制代码
作者: Heykuz 时间: 2015-11-28 13:37
本帖最后由 Heykuz 于 2015-11-28 13:55 编辑
[quote]回复 Heykuz
非常感谢大神,很有用。我还想去除限时,我本意是要来监控的,每隔一秒,当发现有指定窗口的时候就退出。
改了一会,改不成。呜。
作者: yu2n 时间: 2015-11-28 14:13
回复 3# Heykuz - Const sTitle = "百度|谷歌|必应" ' 查找窗口名称,多个名称使用分割号“|”隔开
-
- Dim bFind, o
- Do
- For Each o In Split(sTitle,"|")
- If Trim(o) <> "" Then
- If CreateObject("WScript.Shell").Appactivate(Trim(o)) Then
- bFind = True ' 做标记-已找到
- Exit For
- End If
- End If
- Next
- If bFind = True Then Exit Do '退出循环
- WScript.Sleep 1 * 1000 '延时1秒
- Loop
- If bFind Then
- Msgbox "找到一个含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
- & " 秒。", vbSystemModal+vbInformation, WScript.ScriptName
- Else
- Msgbox "找不到含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
- & " 秒。", vbSystemModal+vbCritical, WScript.ScriptName
- End If
复制代码
作者: Heykuz 时间: 2015-11-30 09:42
[quote]回复 Heykuz
非常的感谢大神,就是这样,太好了。
作者: zhangop9 时间: 2021-1-2 14:59
查找指定窗口
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |