7.3k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo!
Ich möchte ein VBscript, das zuerst abfragt, ob ein IE-Fenster bereits göffnet ist, wenn ja, dieses schließen und im Script weiter fortfahren. Wenn keines geöffnet ist, gleich weiter gehen.

Wie müsste der Code dafür aussehen?

Danke, schon mal.

10 Antworten

0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Könnte man so machen:

' Script beendet alle laufenden IE-Prozesse
' [von Massaraksch]

' WMI-Objekt erstellen
Set objWMI = GetObject("winmgmts:")

' Alle laufenden IE-Prozesse ermitteln
Set colProcessList = objWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")

' Alle gefundenen IE-Prozesse ohne Rückfrage beenden
For Each objProcess in colProcessList
objProcess.Terminate()
Next

Ist allerdings ein "unsanftes" Beenden. Bei aktivierter Absturzwiederherstellung (gibts glaub ich erst bei IE8?) fragt der IE beim nächsten Start evtl. nach, ob die letzte Sitzung wiederhergestellt werden soll.

Massaraksch
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
OK, probiern wir's mal etwas anders:
' Script schließt alle geöffneten IE-Fenster
' [von Massaraksch]

' Shell-Objekt erstellen
set objShell = createobject("Shell.Application")

' Jedes offene IE-Fenster schließen
for each objShWindow in objShell.Windows
if objShWindow.Application.Name = "Windows Internet Explorer" then objShWindow.Quit
next

Dies wäre dann die "sanfte" Tour. Teste mal...
Massaraksch
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Hmm, grübel, eigentlich ist die Prüfung des Namens Bockwurst, denn das können eh nur IE's sein. Also müßt es kürzer gehen:
...
for each objShWindow in objShell.Windows
objShWindow.Quit
next
...

Massaraksch
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Ach nee, vergiß Antwort 3 schnell wieder! War echt Blödsinn von mir.

Probiers mit Antwort 2.

Massaraksch
0 Punkte
Beantwortet von
Danke für deine Mühe mir zu helfen.
Das Script aus Antwort 2 schliesst kein Fenster. Verursacht auch keine Fehlermeldung. Script läuft normal durch.

Antwort 1 kann ich nicht nutzen, da Win98 nicht WMI tauglich ist.
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Ach, Win98? Nutzt das noch wer? ;o)

Mal sehn, evtl. könnte man ja die Pfadzeichenfolge der Shell-Fenster nach iexplore.exe durchforsten. Das sollte eigentlich eindeutig sein auch bei Win98. Probier mal:
set objShell = createobject("Shell.Application")

for each objShWindow in objShell.Windows
if instr(1, objShWindow.FullName, "iexplore.exe", 1) then objShWindow.Quit
next

Massaraksch
0 Punkte
Beantwortet von
Jetzt funktioniert es. Danke!
0 Punkte
Beantwortet von
Hier mal das fertige VBscript, für die, die sich dafür interessieren.

' ====================================================
' File: Autologin.vbs (WSH-Beispiel in VBScript)
'
' Zweck: Stellt eine Verbindung zum Internet-Portal
' www.WEB.DE her und führt eine automatische
' Anmeldung zum FreeMail-Postfach durch.
' ====================================================
Option Explicit

'*****************************************************
' Achtung: Nachfolgend müssen der eigene Benutzername
' sowie das Kennwort eingetragen werden.
' Es besteht dadurch die Gefahr, dass diese
' ausgespäht werden.
'*****************************************************
Const UserName = "XXXX" ' Ihr Benutzername
Const Pword = "YYYYYY" ' Ihr Passwort/Kennwort im Klartext
'*****************************************************

Const sTitle = "Login bei FreeMail von WEB.de"

Dim oDoc, oIE, objShell, objShWindow

If MsgBox ("Benutzer '" & UserName & "' an WEB.DE-Postfach anmelden?", _
vbYesNo + vbQuestion, sTitle) = vbNo Then _
WScript.Quit ' Benutzerabbruch

' Shell-Objekt erstellen
Set objShell = WScript.CreateObject("Shell.Application")

' Jedes offene IE-Fenster schließen
For Each objShWindow In objShell.Windows
if instr(1, objShWindow.FullName, "iexplore.exe", 1) then objShWindow.Quit

Next

Set oIE = WScript.CreateObject("InternetExplorer.Application") ' IE starten
oIE.Visible = True
oIE.Navigate "www.web.de" ' WEB.DE Startseite aufrufen

Do
Loop Until oIE.ReadyState = 4 ' warten, bis Seite geladen

' Jetzt Anmeldedaten in Postfach-Felder eintragen und anmelden
Set oDoc = oIE.Document ' Hole Objektreferenz auf HTML-Seite
oDoc.FM.username.Value = UserName ' Setze Benutzername
oDoc.FM.password.Value = Pword ' Setze Kennwort
oDoc.FM.submit ' Formular abschicken

' Ende

Das Script im Notepad-Editor einfügen und als Autologin.vbs abspeichern. Die datei auf dem Desktop ablegen und bei bestehender Internetverbindung mit eien Doppelklick auf die datei starten.

Wem es interessiert - habe auch noch ein Script für ARCOR.de-Postfach geschrieben.
0 Punkte
Beantwortet von
Hi, Jürgen

das Script funktioniert einwandfrei und spart ein Paar Mausklicks. Danke!
0 Punkte
Beantwortet von
Funzt ausgezeichnet.

Bei gmx muss es statt

oDoc.FM.username.Value = UserName ' Setze Benutzername
oDoc.FM.password.Value = Pword ' Setze Kennwort
oDoc.FM.submit ' Formular abschicken

oDoc.formLogin.username.Value = UserName ' Setze Benutzername
oDoc.formLogin.password.Value = Pword ' Setze Kennwort
oDoc.formLogin.submit ' Formular abschicken

und statt

oIE.Navigate "www.web.de"

oIE.Navigate "www.gmx.de"


heißen.
...