需要从已使用的URL捕获进程ID

时间:2013-07-17 13:15:00

标签: internet-explorer vbscript

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

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

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

1 个答案:

答案 0 :(得分:1)

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

让我们回来 - 为什么你需要完成这项任务?