包含终止IE实例的行会导致Do Until
或我的宏冻结出现自动化错误。该行用于确保没有旧进程驻留在内存中。
当我进入调试,运行Shell行并等待一段时间后,问题不会出现,因此IE可能会在执行下一行之前加载。
我想知道是否有任何方法可以检测IE应用程序是否已准备就绪。用name='iexplore.exe'
替换name='iexplore.exe *32'
不会使32位进程消失,可能会消失并杀死其他实例可能会使用循环?
Shell ("C:\Windows\system32\cmd.exe /c wmic process where name='iexplore.exe' call terminate")
Link = "http://www.example.com"
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate Link
Do Until ie.ReadyState = 4 And ie.Busy = False
DoEvents
Loop
答案 0 :(得分:1)
WMIC只是调用对象。你可以直接打电话给他们。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
For Each objItem in colItems
'msgbox objItem.name & " " & objItem.ProcessID & " " & objItem.CommandLine
If objItem.name = "iexplore.exe" then objItem.terminate
Next
它的名字是IExplore.exe,无论哪个位。
访问shell文件夹(Explorer和Internet Explorer窗口[历史原因])。每5秒刷新一次所有shell窗口。我已经添加了一个msgbox。
Set objShell = CreateObject("Shell.Application")
Do
Set AllWindows = objShell.Windows
Count = 0
For Each window in AllWindows
msgbox window.locationname
window.refresh2 3
`To close a shell window
`window.close
Count = Count + 1
Next
If Count = 0 then Exit Do
Wscript.sleep 5000
Loop