maikell84
Goto Top

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.

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 face-smile


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. face-smile
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

Content-Key: 227145

Url: https://administrator.de/contentid/227145

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: colinardo
Lösung colinardo 20.01.2014 aktualisiert um 16:28:41 Uhr
Goto Top
Hallo Maikell,
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
Grüße Uwe
Mitglied: Maikell84
Maikell84 20.01.2014 um 16:28:34 Uhr
Goto Top
Hallo Uwe,

Klasse, vielen Dank!!
Das funktioniert so genau wie es soll! face-smile
Perfekt!

Viele Grüße
Maikell