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

[问题求助] [已解决]如何修改下面的vbs代码,实现:循环监控多个窗口标题?

[复制链接]
发表于 2015-11-29 22:40:27 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2015-12-4 10:52 编辑

[已解决]如何修改下面的vbs代码,实现:循环监控多个窗口标题?
比如需要同时监控3个窗口标题。分别是:aaaa、bbbb、cccc

下面的vbs代码,已经测试过了,好用。。
  1. Const strWindowTitle = "aaaa"   ' 监控的窗口标题

  2. Do
  3.   Main
  4.   WScript.Sleep 2000
  5. Loop

  6. Sub Main()

  7.   Dim wso, fso
  8.   Set wso = CreateObject("Wscript.Shell")
  9.   Set fso=CreateObject("Scripting.FileSystemObject")
  10.   
  11.   '一直检查窗口,直到指定窗口出现
  12.   Do While wso.AppActivate(strWindowTitle) = False
  13.     WScript.sleep 200    ' 延时 0.2 秒
  14.    
  15.   Loop
  16.   
  17.   '激活窗口
  18.   Call WindowActive(strWindowTitle)
  19.   
  20.   '关闭窗口(发送 回车)
  21.   wso.sendkeys "{enter}"  

  22.   Set wso = NoThing
  23.   
  24. End Sub



  25. '激活窗口
  26. Sub WindowActive(ByVal strWindowTitle)
  27.   Dim objWord, objTasks
  28.   Set objWord = CreateObject("word.Application")
  29.   Set objTasks = objWord.Tasks
  30.   If objTasks.Exists(strWindowTitle) Then
  31.     objTasks(strWindowTitle).Activate         '激活窗口
  32.     objTasks(strWindowTitle).WindowState = 0  '0平常模式、1最大化模式、2最小化模式
  33.   End If
  34.   objWord.Quit
  35. End Sub
复制代码
 楼主| 发表于 2015-11-29 23:18:30 | 显示全部楼层
好像解决了。。。
  1. Const strWindowTitle = "aaaa|bbbb"   ' 监控的窗口标题

  2. Do
  3.   Main
  4.   WScript.Sleep 2000
  5. Loop

  6. Sub Main()

  7.   Dim wso, fso
  8.   Dim bFind, o

  9.   Set wso = CreateObject("Wscript.Shell")
  10.   Set fso=CreateObject("Scripting.FileSystemObject")
  11.   


  12. Do
  13.         For Each o In Split(strWindowTitle,"|")
  14.                 If Trim(o) <> "" Then
  15.                         If CreateObject("WScript.Shell").Appactivate(Trim(o)) Then
  16.                                 bFind = True        ' 做标记-已找到
  17.                                 Exit For
  18.                         End If
  19.                 End If
  20.         Next
  21.         If bFind = True Then Exit Do        '退出循环
  22.         WScript.Sleep 200        '延时0.2 秒
  23. Loop




  24.   '一直检查窗口,直到指定窗口出现
  25. If bFind Then
  26.   
  27.   '激活窗口
  28.   Call WindowActive(strWindowTitle)
  29.   
  30.   '关闭窗口(发送 Alt + F4)
  31.   wso.SendKeys "(%{F4})"
  32.   '关闭窗口(发送 回车)
  33.   'wso.sendkeys "{enter}"  

  34.   Set wso = NoThing

  35. Else
  36. End If


  37.   
  38. End Sub



  39. '激活窗口
  40. Sub WindowActive(ByVal strWindowTitle)
  41.   Dim objWord, objTasks
  42.   Set objWord = CreateObject("word.Application")
  43.   Set objTasks = objWord.Tasks
  44.   If objTasks.Exists(strWindowTitle) Then
  45.     objTasks(strWindowTitle).Activate         '激活窗口
  46.     objTasks(strWindowTitle).WindowState = 0  '0平常模式、1最大化模式、2最小化模式
  47.   End If
  48.   objWord.Quit
  49. End Sub
复制代码
发表于 2015-12-23 11:14:36 | 显示全部楼层
以前试过,貌似VBS的检查和激活窗口不太稳定
 楼主| 发表于 2015-12-23 16:37:20 | 显示全部楼层

标题

回复 3# 9zhmke
测试过了。vbs循环检测1个窗口标题,很稳定。2个不行,exe软件会崩溃。。
发表于 2021-1-2 18:49:40 | 显示全部楼层
监控多个窗口标题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 05:08 , Processed in 0.018122 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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