VBS-Script soll den IE öffnen - aber auch bei mehrmaligem Aufruf immer im gleichen Fenster starten!
Hallo!
Ich habe eine Frage zu einem VBS-Script, welches ich aus dem Internet kopiert und etwas angepasst habe.
Das folgende Script ruft den Internetexplorer ohne Statuszeile, Menüleiste usw... auf und navigiert sofort zu der URL, die ich dem Script übergebe.
Soweit so gut. Funktioniert auch
Nun wird das Script jedes Mal in einem neuen Fenster aufgerufen, was schlecht ist. Es sollte einmal in einem neuen Fenster aufgehen, und dann sollte die Seite immer wieder im gleichen Fenster aufgerufen werden, wenn der Benutzer das Fenster noch nicht geschlossen hat.
Nun bin ich mit meinen bescheidenen vbs und batch-Kenntnissen am Ende, weswegen ich mich fragend an Euch wende.
Wie ist das zu realisieren?
Mein Gedanke war:
Erkennen ob das Fenster schon offen ist. Falls ja das Fenster killen und neu aufmachen.
Z.B.:
Dadurch habe ich die Prozess-ID des IE Fensters, und kann sie dann mit taskkill killen.
Problem bei der Sache:
1.) Ich kann nicht herausfinden, welches das IE-Fenster ist, mit dem der Nutzer durch das Internet surft und welches das Fenster ist, welches ich durch das obige Script aufgemacht habe.
2.) Ich erhalte durch den Befehl 6 IE-PIDs, obwohl nur 2 Fenster offen sind?
Habt Ihr eine Idee, wie ich die Problemstellung lösen kann?
Viele Grüße
Maikell
Ich habe eine Frage zu einem VBS-Script, welches ich aus dem Internet kopiert und etwas angepasst habe.
Das folgende Script ruft den Internetexplorer ohne Statuszeile, Menüleiste usw... auf und navigiert sofort zu der URL, die ich dem Script übergebe.
Dim objExplorer, url
url = WScript.Arguments.Named.Item("url")
Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
Do While (objExplorer.Busy)
Wscript.Sleep 250
Loop
objExplorer.TheaterMode = False
objExplorer.AddressBar = True
objExplorer.MenuBar = False
objExplorer.StatusBar = False
objExplorer.ToolBar = False
objExplorer.Resizable = True
' Hier die Fenstergröße definieren
objExplorer.Height = 715
objExplorer.Width = 650
objExplorer.Left = 0
objExplorer.Top = 0
'objExplorer.FullScreen = True
objExplorer.Silent = False
objExplorer.Visible = True
objExplorer.Navigate url
objShell.AppActivate objExplorer
'WshShell.AppActivate oWshShell.ProcessID
Set objExplorer = nothing
Soweit so gut. Funktioniert auch
Nun wird das Script jedes Mal in einem neuen Fenster aufgerufen, was schlecht ist. Es sollte einmal in einem neuen Fenster aufgehen, und dann sollte die Seite immer wieder im gleichen Fenster aufgerufen werden, wenn der Benutzer das Fenster noch nicht geschlossen hat.
Nun bin ich mit meinen bescheidenen vbs und batch-Kenntnissen am Ende, weswegen ich mich fragend an Euch wende.
Wie ist das zu realisieren?
Mein Gedanke war:
Erkennen ob das Fenster schon offen ist. Falls ja das Fenster killen und neu aufmachen.
Z.B.:
Set objWMIService = GetObject("winmgmts:\\localhost\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE '%iexplore.exe%' ", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
WScript.Echo "ProcessId: " & objItem.ProcessId
next
Dadurch habe ich die Prozess-ID des IE Fensters, und kann sie dann mit taskkill killen.
Problem bei der Sache:
1.) Ich kann nicht herausfinden, welches das IE-Fenster ist, mit dem der Nutzer durch das Internet surft und welches das Fenster ist, welches ich durch das obige Script aufgemacht habe.
2.) Ich erhalte durch den Befehl 6 IE-PIDs, obwohl nur 2 Fenster offen sind?
Habt Ihr eine Idee, wie ich die Problemstellung lösen kann?
Viele Grüße
Maikell
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 227145
Url: https://administrator.de/forum/vbs-script-soll-den-ie-oeffnen-aber-auch-bei-mehrmaligem-aufruf-immer-im-gleichen-fenster-starten-227145.html
Ausgedruckt am: 19.01.2025 um 19:01 Uhr
2 Kommentare
Neuester Kommentar
Hallo Maikell,
machs mal so:
Grüße Uwe
machs mal so:
Dim objExplorer, url
url = WScript.Arguments.Named.Item("url")
Set objShell = CreateObject("Shell.Application")
Set WshShell = CreateObject("Wscript.Shell")
'Objekt mit allen aktuellen Fenstern holen
Set objWindow = objShell.Windows()
For Each objItem In objWindow
' Wenn die Befehlszeile des Fensters 'iexplore' enthält und die Breite des Fensters 650 beträgt, dann setze objExplorer auf das Fenster-Objekt
If InStr(1,LCase(objItem.FullName),"iexplore",1) and objItem.Width = 650 Then
Set objExplorer = objItem
Exit For
End If
Next
' Wenn kein passendes IE-Fenster gefunden wurde, erzeuge ein neues IE-Object
If IsEmpty(objExplorer) Then
Set objExplorer = CreateObject("InternetExplorer.Application")
End If
objExplorer.TheaterMode = False
objExplorer.AddressBar = True
objExplorer.MenuBar = False
objExplorer.StatusBar = False
objExplorer.ToolBar = False
objExplorer.Resizable = True
' Hier die Fenstergröße definieren
objExplorer.Height = 715
objExplorer.Width = 650
objExplorer.Left = 0
objExplorer.Top = 0
objExplorer.Silent = False
objExplorer.Visible = True
objExplorer.Navigate url
Do While (objExplorer.Busy)
Wscript.Sleep 250
Loop
wshShell.AppActivate objExplorer
Set objExplorer = Nothing
Set objShell = Nothing