Board logo

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

作者: ygqiang    时间: 2015-11-29 22:40     标题: [已解决]如何修改下面的vbs代码,实现:循环监控多个窗口标题?

本帖最后由 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
复制代码

作者: ygqiang    时间: 2015-11-29 23:18

好像解决了。。。
  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
复制代码

作者: 9zhmke    时间: 2015-12-23 11:14

以前试过,貌似VBS的检查和激活窗口不太稳定
作者: ygqiang    时间: 2015-12-23 16:37     标题: 标题

回复 3# 9zhmke
测试过了。vbs循环检测1个窗口标题,很稳定。2个不行,exe软件会崩溃。。
作者: zhangop9    时间: 2021-1-2 18:49

监控多个窗口标题




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2