Que comando VBScript deve ser usado para dizer que não faça nada?

1

Qual comando deve ser usado em vez de Do nothing abaixo para que ele não faça nada? Se eu apenas deixá-lo vazio, WmiPrvSE.exe causará alto uso da CPU.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")

Do
Set colProcesses = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'wordpad.exe'")
If colProcesses.Count = 0 Then
    'Do nothing'
Else
    Wscript.Echo "wordpad.exe is running."
End If
Loop
    
por Matthew Wai 11.06.2017 / 18:25

2 respostas

1

Para deixar o "if" em branco - o script está usando alta CPU porque está completando a verificação "if" e então está se movendo muito rapidamente porque e not ebing disse para parar e sua CPU está passando as instruções o mais rápido possível.

Acho que o que você está procurando é o comando sleep :

If colProcesses.Count = 0 The
    WScript.Sleep(10000)
Else

Esse número é Milissegundos (1000 = 1 segundo) e é por quanto tempo o processo será pausado. No exemplo acima, ele pausa por 10 segundos.

Referência SS64 para o WScript Sleep

    
por 11.06.2017 / 19:03
1

O comando que você está procurando seria DoEvents , exceto que este conceito não existe no VBScript, nem ajudaria no seu caso também.

O motivo de seu alto uso de CPU é porque o loop continua fazendo a tarefa repetidamente. Por isso, é questionar se o WordPad está sendo executado repetidas vezes e, quando isso acontece, o loop não termina e, portanto, continua a fazê-lo.

O que você vai querer fazer é limitar o script para fazer isso com uma espera entre eles.

Então, seu Do Nothing seria algo assim:

starttime = timer
do: loop until timer = starttime + 1

O + 1 pode ser substituído por qualquer número e esperará muito tempo. Por exemplo, se você quiser verificar apenas a cada 10 segundos, altere para + 10 .

    
por 11.06.2017 / 18:52