0

在工作 2 天后找到解决方案,我放弃并寻求您的帮助。我需要一个启动 url 的 vbs,比如说 www.msn.nl,然后保持该脚本打开,直到用户使用相同的 url 关闭 IE。我编写了一个与proces-id一起工作的脚本,并且对于像notepad.exe这样的可执行文件工作得很好。但此脚本不适用于 Internet Explorer。当 url 启动时,proces-id 会发生变化。还有我的问题。不知何故,我需要获得那个新的进程 ID。

这是我到目前为止制作的脚本:

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("c:\Program Files (x86)\Internet Explorer\iexplore.exe  www.msn.com", null, objConfig, PID)
'errReturn = objProcess.Create("notepad.exe", null, objConfig, PID)

' Verify Process Availability

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

ProcessItem = "Select * from Win32_Process Where ProcessID = " & PID
WScript.Echo PID

Do
Set colProcesses = objWMIService.ExecQuery (ProcessItem)

Set WshShell = WScript.CreateObject("WScript.Shell") 

If Not colProcesses.Count = 0 Then
    WScript.Sleep 1500
    'WScript.Echo "running"
Else
    WScript.Echo "quit"
    WScript.Quit
End If
Loop
4

1 回答 1

1

由于 Internet Explorer 的多进程架构,这是一项极其重要的任务。在现代操作系统上,有多个 IE 进程(一个或多个框架/管理器进程和一个或多个选项卡/内容进程),没有简单的方法来了解哪个属于哪个。如果导航从一个安全区域(例如 Intranet)跨越到另一个安全区域(例如 Internet),则事情会更加复杂,因为导航在一个进程中开始并在另一个进程中结束。

让我们备份——为什么你需要完成这个任务?

于 2013-07-17T20:49:47.310 回答