При завершении работы проводника inte rnet в VBA я использую следующий код (более или менее) из stackoverflow:
Sub IE_Sledgehammer()
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
MsgBox "iexplore.exe processes = " & objProcesses.Count
For Each objProcess In objProcesses
Call objProcess.Terminate
Next
Set objProcesses = Nothing: Set objWMI = Nothing
End sub
Количество возвращаемых процессов равно "2" (что правильно ), но в первой итерации For l oop, когда первый iexplore.exe завершается, что также завершает второй процесс, и поэтому во второй итерации l oop возникает ошибка «not found». Я понимаю, что это потому, что закрытие одного процесса iexplorer.exe закрывает все задачи iexplore.exe.
Мой вопрос: как я могу ссылаться и завершать только первый 'objprocess' в списке objprocesses ИЛИ форсировать For l oop выйти после одной итерации?