需要监控流程

时间:2015-05-06 09:08:05

标签: vbscript

我正在编写一个vb脚本来监控进程。该脚本监视进程的状态,如果进程自10分钟后没有运行,它应该执行一个命令.Below是我的脚本:

    set objWMIService = GetObject ("winmgmts:")
    foundProc = False
    procName = "calc.exe"

    Dim wshell

    ' Initialise the shell object to return the value to the monitor
    Set wshell = CreateObject("WScript.Shell")
    if err.number <> 0 then
                    WScript.Echo "Error: could not create WScript.Shell (error " & err.number & ", " & err.Description & ")"
                    WScript.quit(255)
    end if

    for each Process in objWMIService.InstancesOf ("Win32_Process")
        If StrComp(Process.Name,procName,vbTextCompare) = 0 then
            foundProc = True
            procID = Process.ProcessId
        End If
    Next

 #####code to check the proces status   

    If foundProc = True Then
        WScript.Quit(0)


    Else

        WScript.sleep(1*60*1000)
        If foundProc = True Then
        WScript.Echo "Found Process (" & procID & ")"
        Else
            WScript.Echo "Process not running since 10 mins"
            WScript.Quit(0)

        End If

    End If

1 个答案:

答案 0 :(得分:0)

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set objEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM Win32_ProcessTrace")

Do

    Set objReceivedEvent = objEvents.NextEvent
    If objReceivedEvent.ProcessName = "svchost.exe" then msgbox objReceivedEvent.ProcessName
'   msgbox objReceivedEvent.ProcessName
Loop

您还有Win32_ProcessTraceStartWin32_ProcessTraceStop。上面的代码都是。

在WScript.Shell上进行错误检查也毫无意义。它是一个系统组件 - 应该可用。此外,如果您的脚本无法运行,因为wscript无法运行您的脚本。