Войти

Показать полную графическую версию : [решено] зацикливание


D_e_n_n
05-08-2011, 11:29
Помогите, не могу сделать чтобы этот скрипт постоянно висел в ожидании, и каждые пять минут проверял сколько копий блокнота запущено





On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
send = "Вы запустили больше одной копии блокнота!!!"
dim a, b, c

a = 5 'каждые 5 минут

If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If

b=a*1000*60
wscript.sleep b

For Each objProc In objService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")
i=i+1
if i>1 then
objProc.Terminate
end if
Next
msgbox send

Iska
05-08-2011, 12:10
Примерно так:Option Explicit

Const intPeriod = 5

Dim objSWbemServices
Dim objSWbemObjectEx

Dim i


Set objSWbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")

Do
i = 0

For Each objSWbemObjectEx In objSWbemServices.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")
i = i + 1

if i > 1 Then
objSWbemObjectEx.Terminate
End if
Next

WScript.Sleep 1000 * 60 * intPeriod
Loop

Set objSWbemServices = Nothing

WScript.QuitТолько смысл? За пять минут в Блокноте можно много чего сделать. И есть более правильный способ: подписка на событие по «Win32_ProcessStartTrace».




© OSzone.net 2001-2012