返回列表 发帖

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

本帖最后由 ygqiang 于 2015-12-4 10:52 编辑

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

下面的vbs代码,已经测试过了,好用。。
Const strWindowTitle = "aaaa"   ' 监控的窗口标题
Do
  Main
  WScript.Sleep 2000
Loop
Sub Main()
  Dim wso, fso
  Set wso = CreateObject("Wscript.Shell")
  Set fso=CreateObject("Scripting.FileSystemObject")
  
  '一直检查窗口,直到指定窗口出现
  Do While wso.AppActivate(strWindowTitle) = False
    WScript.sleep 200    ' 延时 0.2 秒
   
  Loop
  
  '激活窗口
  Call WindowActive(strWindowTitle)
  
  '关闭窗口(发送 回车)
  wso.sendkeys "{enter}"  
  Set wso = NoThing
  
End Sub
'激活窗口
Sub WindowActive(ByVal strWindowTitle)
  Dim objWord, objTasks
  Set objWord = CreateObject("word.Application")
  Set objTasks = objWord.Tasks
  If objTasks.Exists(strWindowTitle) Then
    objTasks(strWindowTitle).Activate         '激活窗口
    objTasks(strWindowTitle).WindowState = 0  '0平常模式、1最大化模式、2最小化模式
  End If
  objWord.Quit
End SubCOPY

好像解决了。。。
Const strWindowTitle = "aaaa|bbbb"   ' 监控的窗口标题
Do
  Main
  WScript.Sleep 2000
Loop
Sub Main()
  Dim wso, fso
  Dim bFind, o
  Set wso = CreateObject("Wscript.Shell")
  Set fso=CreateObject("Scripting.FileSystemObject")
  
Do
For Each o In Split(strWindowTitle,"|")
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 200 '延时0.2 秒
Loop
  '一直检查窗口,直到指定窗口出现
If bFind Then
  
  '激活窗口
  Call WindowActive(strWindowTitle)
  
  '关闭窗口(发送 Alt + F4)
  wso.SendKeys "(%{F4})"
  '关闭窗口(发送 回车)
  'wso.sendkeys "{enter}"  
  Set wso = NoThing
Else
End If
  
End Sub
'激活窗口
Sub WindowActive(ByVal strWindowTitle)
  Dim objWord, objTasks
  Set objWord = CreateObject("word.Application")
  Set objTasks = objWord.Tasks
  If objTasks.Exists(strWindowTitle) Then
    objTasks(strWindowTitle).Activate         '激活窗口
    objTasks(strWindowTitle).WindowState = 0  '0平常模式、1最大化模式、2最小化模式
  End If
  objWord.Quit
End SubCOPY

TOP

以前试过,貌似VBS的检查和激活窗口不太稳定

TOP

标题

回复 3# 9zhmke
测试过了。vbs循环检测1个窗口标题,很稳定。2个不行,exe软件会崩溃。。

TOP

监控多个窗口标题

TOP

返回列表