51Testing软件测试论坛
标题:
求指点,用VBS如何获得任务管理器里应用程序的状态
[打印本页]
作者:
deadhunter
时间:
2013-7-12 17:27
标题:
求指点,用VBS如何获得任务管理器里应用程序的状态
任务管理器里点应用程序,然后看到那个状态栏里的文字如何获得?
作者:
wuxue107
时间:
2013-7-12 23:20
没有太清楚你的意思。不过进程信息获取。一般可以通过下面的方式获得。
1.不知道你所VBS对应操作进程可通过WMI的Win32_Process类接口获取你所需要的信息。
2.通过Wscript.Shell exec 执行命令行tasklist /v用readAll方法获取返回信息。来摘取你要的信息
作者:
deadhunter
时间:
2013-7-15 16:30
本帖最后由 deadhunter 于 2013-7-15 16:36 编辑
[attach]86309[/attach]
该图片的任务状态如何获取?谢谢
作者:
user603
时间:
2013-7-15 17:14
作者:
wuxue107
时间:
2013-7-15 22:36
回复
3#
deadhunter
下面是之前给一个玩游戏的朋友写过的一个脚本。获取程序状态,查找未响应的程序,如果超过60秒就强制结束进程。
On Error Resume Next
If LCase(Right(WScript.FullName,11)) = "wscript.exe" Then
CreateObject("Wscript.Shell").Run "CScript "&Chr(34)&WScript.ScriptFullName&Chr(34)
WScript.quit
End If
Timeout = 60 '多少秒数关闭不响应程序
Times = 6 '每多少秒检测一次,时间误差为一个检测周期
'################ 白名单 ############## 字母用小写
blist = array("system idle process","svchost.exe","conhost.exe", _
"csrss.exe","explorer.exe","lsass.exe","smss.exe","lsm.exe","spoolsv.exe", _
"system","wininit.exe","winlogon.exe","services.exe","taskhost.exe","dwm.exe")
Set objshell = CreateObject("wscript.shell")
set dc = CreateObject("Scripting.Dictionary")
Do
set out = objshell.exec("cmd /c tasklist /v|find "" Not Responding """).stdout
do while Not out.AtEndOfLine
m=out.ReadLine
name = LCase(Trim(Left(m,23)))
pid = Trim(Mid(m,27,8))
b=false
For Each n In blist
If name = n Then b = true:Exit For
Next
If Not b Then
'WScript.Echo "At: " &Date & " " & time & ":TASKKILL /F /PID " & pid
If Not dc.Exists("n" & pid) Then
dc.Add "n" & pid,Times
Else
dc.Item("n" & pid) = dc.Item("n" & pid)+Times
End If
If Time-lt>Times+20 Then dc.Item("n" & pid)=Times
lt= Time
WScript.Echo "At: " & FormatDateTime(Now,2) & " ProcessName:" & Left(m,23) & " PID:" & Mid(m,27,8) & " Time out: " & String(6-Len(dc.Item("n" & pid))," ") & dc.Item("n" & pid) & " Second!"
If dc.Item("n" & pid)>=Timeout Then
objshell.Run "TASKKILL /F /PID " & pid ,0
WScript.Echo "At: " & FormatDateTime(Now,2) & " ProcessName:" & Left(m,23) & " PID:" & Mid(m,27,8) & " Execute: " & "TASKKILL /F /PID " & pid
End if
End if
Loop
WScript.Sleep Times * 1000
Loop While true
复制代码
作者:
黑羽祭
时间:
2013-7-16 09:00
回复
5#
wuxue107
有点意思哈~
作者:
deadhunter
时间:
2013-7-25 10:15
请教大虾们,有知道VBS或C#能实现吗?
试了用C#是可以实现,但是同时打开多个IE时,C#只能获取一个IE状态,不能获取所有IE窗口的状态
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2