Board logo

标题: [问题求助] vbs判断是否存在指定窗口 [打印本页]

作者: Heykuz    时间: 2015-11-27 23:21     标题: vbs判断是否存在指定窗口

本帖最后由 pcl_test 于 2016-10-14 04:02 编辑

原由http://www.bathome.net/thread-23579-1-1.html
  1. 'VBS 查找含有“百度”文字的窗口,激活并提示 By yu2n
  2. '在5秒内查找含有“百度”文字的窗口,
  3. '  若存在,则激活并提示 "找到一个含有“百度”文字的窗口!"
  4. '  若不存在,则提示 "找不到含有“百度”文字的窗口!"
  5. Const sTitle = "百度"   ' 查找窗口名称
  6. Const nTimeOut = 5      ' 指定超时时间
  7. Dim dtStart, bFind
  8. dtStart = Now()
  9. Do While DateDiff("s", dtStart, Now()) < nTimeOut
  10.   WScript.Sleep 200
  11.   If CreateObject("WScript.Shell").Appactivate(sTitle) Then
  12.     bFind = True  ' 做标记-已找到
  13.     Exit Do
  14.   End If
  15. Loop
  16. If bFind Then
  17.   Msgbox "找到一个含有“百度”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
  18.     & " 秒。", vbSystemModal+vbInformation, WScript.ScriptName
  19. Else
  20.   Msgbox "找不到含有“百度”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
  21.     & " 秒。", vbSystemModal+vbCritical, WScript.ScriptName
  22. End If
复制代码
我想搜索条件包含其它字符,例如百度 或 谷歌 或 必应
Const sTitle = "百度 or 谷歌 or 必应"   '这样试了不行
该如何写呢。
作者: yu2n    时间: 2015-11-28 11:07

回复 1# Heykuz

使用Split对字符串划分、生成数组,使用For Each遍历这个数组。
  1. Const sTitle = "百度|谷歌|必应" ' 查找窗口名称,多个名称使用分割号“|”隔开
  2. Const nTimeOut = 5 ' 指定超时时间
  3. Dim dtStart, bFind, o
  4. dtStart = Now()
  5. Do While DateDiff("s", dtStart, Now()) < nTimeOut
  6. WScript.Sleep 200
  7. For Each o In Split(sTitle,"|") '遍历分组
  8. If Trim(o) <> "" Then
  9. If CreateObject("WScript.Shell").Appactivate(Trim(o)) Then
  10. bFind = True ' 做标记-已找到
  11. Exit For
  12. End If
  13. End If
  14. Next
  15. If bFind = True Then Exit Do
  16. Loop
  17. If bFind Then
  18. Msgbox "找到一个含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
  19. & " 秒。", vbSystemModal+vbInformation, WScript.ScriptName
  20. Else
  21. Msgbox "找不到含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
  22. & " 秒。", vbSystemModal+vbCritical, WScript.ScriptName
  23. End If
复制代码

作者: Heykuz    时间: 2015-11-28 13:37

本帖最后由 Heykuz 于 2015-11-28 13:55 编辑

[quote]回复  Heykuz

非常感谢大神,很有用。我还想去除限时,我本意是要来监控的,每隔一秒,当发现有指定窗口的时候就退出。
改了一会,改不成。呜。
作者: yu2n    时间: 2015-11-28 14:13

回复 3# Heykuz
  1. Const sTitle = "百度|谷歌|必应" ' 查找窗口名称,多个名称使用分割号“|”隔开
  2. Dim bFind, o
  3. Do
  4. For Each o In Split(sTitle,"|")
  5. If Trim(o) <> "" Then
  6. If CreateObject("WScript.Shell").Appactivate(Trim(o)) Then
  7. bFind = True ' 做标记-已找到
  8. Exit For
  9. End If
  10. End If
  11. Next
  12. If bFind = True Then Exit Do '退出循环
  13. WScript.Sleep 1 * 1000 '延时1秒
  14. Loop
  15. If bFind Then
  16. Msgbox "找到一个含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
  17. & " 秒。", vbSystemModal+vbInformation, WScript.ScriptName
  18. Else
  19. Msgbox "找不到含有“" & sTitle & "”文字的窗口!耗时 " & DateDiff("s", dtStart, Now()) _
  20. & " 秒。", vbSystemModal+vbCritical, WScript.ScriptName
  21. 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