标题: [问题求助] [已解决]vbs代码,如果循环检测1个exe软件窗口标题,很稳定。循环检测2个,会崩溃。 [打印本页]
作者: ygqiang 时间: 2015-12-24 19:26 标题: [已解决]vbs代码,如果循环检测1个exe软件窗口标题,很稳定。循环检测2个,会崩溃。
本帖最后由 ygqiang 于 2016-1-9 18:07 编辑
[已解决]vbs代码,如果循环检测1个exe软件窗口标题,很稳定。循环检测2个,会崩溃。
窗口标题,是exe软件弹出来的。。而且如果是弹出2个窗口,一般不会同时或者连续弹出来。是各自分别在不同的时刻弹出来。
vbs代码,如果循环检测2个窗口标题。
测试过了,如果是连续间隔几秒钟出现相同的1个窗口标题,vbs代码会一直正常。
如果是连续间隔几秒,交叉出现2个不同的窗口标题,就会崩溃。
应该如何修改检测2个窗口标题的vbs代码呢?- 'vbs检测1个窗口标题
- 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)
-
- '关闭窗口(发送 Alt + F4)
- 'wso.SendKeys "(%{F4})"
- '关闭窗口(发送 回车)
- 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 Sub
复制代码
作者: ygqiang 时间: 2015-12-24 19:28
vbs检测2个窗口标题。。exe软件会崩溃。应该如何修改代码呢?多谢- 'vbs检测2个窗口标题
- 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 Sub
复制代码
作者: ygqiang 时间: 2016-1-9 18:06
本帖最后由 ygqiang 于 2016-1-9 18:08 编辑
初步解决。。。保存为2个vbs文件,开机启动,先后运行这2个vbs文件。- Const strWindowTitle = "aaaa" ' 监控的窗口标题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)
-
- '关闭窗口(发送 Alt + F4)
- 'wso.SendKeys "(%{F4})"
- '关闭窗口(发送 回车)
- 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 Sub
复制代码
- Const strWindowTitle = "bbbb" ' 监控的窗口标题bbbb
-
- 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)
-
- '关闭窗口(发送 Alt + F4)
- 'wso.SendKeys "(%{F4})"
- '关闭窗口(发送 回车)
- 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 Sub
复制代码
作者: zhangop9 时间: 2021-1-11 17:38
检测窗口标题
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |