51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3040|回复: 6
打印 上一主题 下一主题

[求助] 求指点,用VBS如何获得任务管理器里应用程序的状态

[复制链接]
  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2013-7-12 17:27:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    任务管理器里点应用程序,然后看到那个状态栏里的文字如何获得?
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2013-7-12 23:20:14 | 只看该作者
    没有太清楚你的意思。不过进程信息获取。一般可以通过下面的方式获得。
    1.不知道你所VBS对应操作进程可通过WMI的Win32_Process类接口获取你所需要的信息。
    2.通过Wscript.Shell exec 执行命令行tasklist /v用readAll方法获取返回信息。来摘取你要的信息
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2013-7-15 16:30:07 | 只看该作者
    本帖最后由 deadhunter 于 2013-7-15 16:36 编辑


    该图片的任务状态如何获取?谢谢

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2013-7-15 17:14:02 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2013-7-15 22:36:44 | 只看该作者
    回复 3# deadhunter

    下面是之前给一个玩游戏的朋友写过的一个脚本。获取程序状态,查找未响应的程序,如果超过60秒就强制结束进程。

    1. On Error Resume Next
    2. If LCase(Right(WScript.FullName,11)) = "wscript.exe" Then
    3.         CreateObject("Wscript.Shell").Run "CScript "&Chr(34)&WScript.ScriptFullName&Chr(34)
    4.         WScript.quit
    5. End If

    6. Timeout = 60                        '多少秒数关闭不响应程序
    7. Times = 6                                '每多少秒检测一次,时间误差为一个检测周期

    8. '################  白名单   ############## 字母用小写
    9. blist = array("system idle process","svchost.exe","conhost.exe", _
    10. "csrss.exe","explorer.exe","lsass.exe","smss.exe","lsm.exe","spoolsv.exe", _
    11. "system","wininit.exe","winlogon.exe","services.exe","taskhost.exe","dwm.exe")

    12. Set objshell = CreateObject("wscript.shell")
    13. set dc = CreateObject("Scripting.Dictionary")
    14. Do
    15.         set out = objshell.exec("cmd /c tasklist /v|find "" Not Responding """).stdout
    16.         do while Not out.AtEndOfLine
    17.                 m=out.ReadLine
    18.                 name = LCase(Trim(Left(m,23)))
    19.                 pid = Trim(Mid(m,27,8))
    20.                 b=false
    21.                 For Each n In blist
    22.                         If name = n Then b = true:Exit For
    23.                 Next
    24.                
    25.                 If Not b Then
    26.                         'WScript.Echo "At: " &Date & " " & time & ":TASKKILL  /F /PID " & pid
    27.                         If Not dc.Exists("n" & pid) Then
    28.                                 dc.Add "n" & pid,Times
    29.                         Else
    30.                                 dc.Item("n" & pid) = dc.Item("n" & pid)+Times
    31.                         End If
    32.                         If Time-lt>Times+20 Then dc.Item("n" & pid)=Times
    33.                         lt= Time

    34.                         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!"
    35.                         If dc.Item("n" & pid)>=Timeout Then
    36.                                 objshell.Run "TASKKILL  /F /PID " & pid ,0
    37.                                 WScript.Echo "At: " & FormatDateTime(Now,2) &  " ProcessName:" & Left(m,23) & "  PID:" & Mid(m,27,8) & "  Execute: " & "TASKKILL  /F /PID " & pid
    38.                         End if
    39.                 End if
    40.         Loop
    41.        
    42.         WScript.Sleep Times * 1000
    43. Loop While true

    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2013-7-16 09:00:46 | 只看该作者
    回复 5# wuxue107


        有点意思哈~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2013-7-25 10:15:16 | 只看该作者
    请教大虾们,有知道VBS或C#能实现吗?
    试了用C#是可以实现,但是同时打开多个IE时,C#只能获取一个IE状态,不能获取所有IE窗口的状态
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-20 21:28 , Processed in 0.077135 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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