这是在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
答案 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一次。