2013-07-17 49 views
0

工作2天后找到解決方案,我放棄並請求您的幫助。我需要一個vbs來啓動一個url,讓我們說www.msn.nl,然後保持這個腳本打開,直到用戶用相同的url關閉IE。我編寫了一個可以與proces-id一起工作的腳本,並且可以很好地處理像notepad.exe這樣的可執行文件。但是這個腳本不適用於Internet Explorer。當url啓動時,proces-id會改變。這是我的問題。不知怎的,我需要得到這個新的進程ID。需要從使用的URL中捕獲進程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 
+0

請退後一步,描述您嘗試解決的實際問題,而不是您認爲的解決方案。 *爲什麼*你想捕捉這個特定的PID? –

回答

1

這是一個非常不平凡的任務,因爲Internet Explorer的多進程架構。在現代操作系統上,有多個IE進程(一個或多個框架/管理器進程和一個或多個選項卡/內容進程),並且沒有簡單的方法來了解哪些屬於哪個進程。當導航從一個安全區域(例如Intranet)跨越到另一個安全區域(例如因特網)時,事情變得更加複雜,因爲導航在一個過程中開始並在另一個過程中結束。

讓我們回去 - 爲什麼你需要完成這項任務?