HTA中的VB脚本获取脚本以检查服务并循环直到其启动

时间:2014-05-20 17:15:16

标签: loops vbscript hta

这是在HTA中,并检查了VB脚本以获得HTA兼容性。虽然很明显我没有关于VB Scripting语言的大部分内容,但我会尽我所能。

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\Cimv2") 

Set colItems = objWMIService.ExecQuery( _
    "Select * From Win32_Service where Name= 'spooler'")

For Each objItem In colItems 
    If objItem.State = "Running" Then
        Set objShell = CreateObject("Shell.Application")
        objShell.ShellExecute """C:\Program Files\Program\program.exe""" 
    ElseIf objItem.State = "Stopped" Then

        Empty code area

    End If
Next

在空代码区域,我正在努力让事情发生。我试过了:

Do

Loop Until objItem.State = "Running"

这导致HTA挂起,因为“警告脚本没有响应错误”。

目前正试图找到这些方面的内容,但只是想知道是否有人有更好的建议。

干杯

d

1 个答案:

答案 0 :(得分:1)

我做了一些调查。 colItems似乎属于SWbemObjectSet类型。这是一个COM对象,它的行为与大多数VB,VBA,VBScript集合不同。这应该有效:

Dim i

For i = 0 To colItems.Count - 1
    If colItems.ItemIndex(i).State = "Running" Then
        Set objShell = CreateObject("Shell.Application")
        objShell.ShellExecute """C:\Program Files\Program\program.exe""" 
        Exit For
    End If
Next i

我还添加了Exit For,因为您只想启动program.exe一次。