我正在创建此代码以帮助我开发的更大的流程。这篇文章将帮助我实现自动化。假设你已经打开了至少2个ie窗口,下面的第一部分找到第一个打开的时间并将其设置为变量“strReturn”。这基本上是删除冒号的时间。我删除了冒号以便更轻松地进行数字比较。因为它似乎按顺序遍历这些,所以我立即退出FOR语句,因为第一个是我关心的。
然后,第二个语句,它是为了杀死进程的所有实例而构建的,我试图修改为只删除与变量中的时间匹配的那个。但是,它没有做任何事......我确信我正在错误地实现它。我已经将我修改过的部分从原始版本中加粗,试图加粗 - 你会看到星号......哈哈。我明白哪里出错了? TIA
'=============================================================
'Finds time first instance of iexplore process was started
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'iexplore.exe'")
For Each objProcess in colProcessList
dtmStartTime = objProcess.CreationDate
strReturn = replace(split(WMIDateStringToDate(dtmStartTime), " ")(1), ":", "")
wscript.echo strReturn
exit for
Next
'.............................................................
Function WMIDateStringToDate(dtmStart)
WMIDateStringToDate = CDate(Mid(dtmStart, 5, 2) & "/" & _
Mid(dtmStart, 7, 2) & "/" & Left(dtmStart, 4) _
& " " & Mid (dtmStart, 9, 2) & ":" & _
Mid(dtmStart, 11, 2) & ":" & Mid(dtmStart, _
13, 2))
End Function
'=============================================================
'(Supposed to) Kill every instance of iexplore.exe except the instance matching the start time in strReturn variable (1st instance).
KillProc "iexplore.exe"
Sub KillProc( myProcess )
Dim blnRunning, colProcesses, objProcess
blnRunning = False
Set colProcesses = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery( "Select * From Win32_Process", , 48 )
For Each objProcess in colProcesses
If LCase( myProcess ) = LCase( objProcess.Name ) **and strReturn < replace(split(WMIDateStringToDate(dtmStartTime), " ")(1), ":", "")** Then 'Confirm process is running
blnRunning = True 'Get exact case for the actual process name
myProcess = objProcess.Name 'Kill process
objProcess.Terminate()
End If
Next
If blnRunning Then
Do Until Not blnRunning
Set colProcesses = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery( "Select * From Win32_Process Where Name = '"& myProcess & "'" )
WScript.Sleep 1000 'Wait 1 second
If colProcesses.Count = **1** Then 'Exit loop (changed from 0 to 1)
blnRunning = False
End If
Loop
End If
End Sub
答案 0 :(得分:1)
我得到了它的工作。我正在过度思考它,因为我倾向于......
Runtime.exec()