Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 210
Благодарности: 76

Профиль | Отправить PM | Цитировать


Пример сценария, который позволяет запускать указанный процесс либо в количестве, не большем, чем количество таких процессов на момент запуска сценария, либо в единственном экземпляре.
читать дальше »
Код: Выделить весь код
Dim objWMI, objCollection, objItem
Dim strComputer, strProcess, intLimit
Dim objDict, strHandle, strTemp

strComputer = "."
strProcess = "myprocess.exe"
Set objDict = CreateObject("Scripting.Dictionary")
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objCollection = objWMI.ExecQuery("SELECT Handle FROM Win32_Process WHERE Name='" & strProcess & "'")
If objCollection.Count = 0 Then
    intLimit = 1
Else
    For Each objItem In objCollection
        objDict.Add objItem.Handle, True
    Next
    intLimit = objDict.Count
End If
Set objCollection = objWMI.ExecNotificationQuery("SELECT * FROM __InstanceOperationEvent " _
        & "WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name='" & strProcess & "'")
On Error Resume Next
Do
    Set objItem = objCollection.NextEvent
    Select Case objItem.Path_.Class
        Case "__InstanceCreationEvent"
            strTemp = objItem.TargetInstance.Handle
            If objDict.Count < intLimit Then
                objDict.Add strTemp, True
            Else
                objWMI.Get("Win32_Process.Handle='" & strTemp & "'").Terminate
                If Err.Number <> 0 Then Err.Clear
            End If
        Case "__InstanceDeletionEvent"
            strTemp = objItem.TargetInstance.Handle
            If objDict.Exists(strTemp) Then
                objDict.Remove strTemp
            End If
    End Select
Loop
Set objItem = Nothing
Set objCollection = Nothing
Set objWMI = Nothing
Set objDict = Nothing
WScript.Quit 0

Последний раз редактировалось DmitriiV, 30-04-2013 в 13:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:55, 30-04-2013 | #2