VBScript для отключения Windows, когда процесс заканчивается? - PullRequest
1 голос
/ 18 января 2011

У меня есть программа, которая сканирует данные в конце ночи в некоторых случаях.В этих случаях я хотел бы запустить VBScript, который будет следить за закрытием этой программы, а когда это произойдет, выключит Windows.

Я создал файл .BAT, который запускает программу, а затем закрывает Windowsвниз, но мне не всегда нужно завершать работу, когда я заканчиваю пользоваться программой.

Так что я хотел бы использовать программу сканирования, и если в конце ночи я буду готов уйти,но программа все еще сканирует, я бы открыл VBScript, который будет следить за закрытием моей программы сканирования.

Возможно ли это?

Windows 7 Ultimate
x64 UAC = ON

Ответы [ 2 ]

1 голос
/ 18 января 2011

Ну, я понял, как это сделать через этот пост на Techimo.com.

Dim isRunning, wasRunningAtStart, strComputer, strShutdown, objWMIService 
Dim objcolProcesses, objShell, strProcesses, strProcessName

'boolean condition for the loop
isRunning = True
wasRunningAtStart = True

'-----Specify the computer name on which to watch a process:
strComputer = "." '>>> "." for this computer

'-----Specify the process to watch.  Must be enclosed in Single Quotes:
strProcessName = "'processname.exe'" '>>> Example: "'notepad.exe'"

Set objWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\cimv2")
strProcesses = "SELECT * FROM Win32_Process WHERE Name = "
strShutdown = "shutdown -s -t 0 -f -m \\" & strComputer
Set objShell = CreateObject("WScript.Shell")

'Check the process once, no need to run if the process
'isn't already running
'Query WMI for the running processes matching our process name
Set objColProcesses = objWMIService.ExecQuery ( _
    strProcesses & strProcessName)

'If the process is running, the count will be greater than 0,
'so we switch our boolean here to exit the loop.
If objcolProcesses.Count = 0 Then
    wasRunningAtStart = False
    isRunning = False
End If 
Set objColProcesses = Nothing   

Do While isRunning
    'Wait 2 seconds, prevents this script from using the CPU
    WScript.Sleep 2000

    'Query WMI for the running processes matching our process name
    Set objColProcesses = objWMIService.ExecQuery ( _
        strProcesses & strProcessName)

    'If the process is running, the count will be greater than 0,
    'so we switch our boolean here to exit the loop.
    If objColProcesses.Count = 0 Then
        isRunning = False
    End If
Loop

If wasRunningAtStart Then
    'MsgBox "Would shutdown here"
    objShell.Run strShutdown
Else
    MsgBox "The specified program is not already running."
End If

Set objColProcesses = Nothing
Set objShell = Nothing
Set objWMIService = Nothing
1 голос
/ 18 января 2011
' Shutdown.vbs
' Example VBScript to Shutdown computers
' Author Josh Murray
' Version 4.1 - February 2007
' --------------------------------------Option Explicit 
Dim objShell, strComputer, strInput 
Dim strShutdown

Do 
strComputer = (InputBox(" ComputerName to shutdown", "Computer Name"))
If strComputer <> "" Then 
  strInput = True 
End if 
Loop until strInput = True

    strShutdown = "shutdown -s -t 0 -f -m \\" & strComputer

    set objShell = CreateObject("WScript.Shell")

    objShell.Run strShutdown

Wscript.Quit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...