找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21073|回复: 5

[问题求助] vbs判断是否存在指定窗口

[复制链接]
发表于 2015-11-27 23:21:19 | 显示全部楼层 |阅读模式
本帖最后由 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 必应"   '这样试了不行
该如何写呢。
发表于 2015-11-28 11:07:29 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2015-11-28 13:37:25 | 显示全部楼层
本帖最后由 Heykuz 于 2015-11-28 13:55 编辑

[quote]回复  Heykuz

非常感谢大神,很有用。我还想去除限时,我本意是要来监控的,每隔一秒,当发现有指定窗口的时候就退出。
改了一会,改不成。呜。
发表于 2015-11-28 14:13:45 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2015-11-30 09:42:53 | 显示全部楼层
[quote]回复  Heykuz

非常的感谢大神,就是这样,太好了。
发表于 2021-1-2 14:59:36 | 显示全部楼层
查找指定窗口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:27 , Processed in 0.018859 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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