Script funktioniert nicht, wenn noch eine IE-Instanz bereits läuft

  • Hallo, ich habe mir zur Vereinfachung und aus Sicherheitsgründen ein Script zur Durchführung Internetbanking geschrieben.
    - eine auf Floppy gespeicherte zugangs.txt mit den Zugangsdaten wird mit Editor aufgerufen
    - IE mit Bank-Loggin wird aufgerufen (RunWait())
    - Zugangsdaten werden durch copy & paste aus der txt-Datei in IE-Loggin manuell übernommen
    - Nach Abschluss I-Banking wird nach manuellem Beenden des IE automatisch der Editor geschlossen, zum Entfernen der FloppyDisc aufgefordert, der 'Ccleaner' gestartet und danach das Script beendet.

    Funktioniert auch alles bestens, wenn nicht bereits eine IE-Instanz läuft. Dann ist der Befehl RunWait() wirkungslos. Das Script "saust" durch, schließt den Editor wieder - ehe ich copy & paste überhaupt ansatzweise durchführen kann ?( .
    Wo liegt das Problem, habe keine Ahnung, wo ich ansetzen soll. AutoIt ist auch sehr neu für mich. Bitte um Hilfe.

    Hier der Code:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    AutoItSetOption("MustDeclareVars", 1)
    call(doSparkasse())
    ;
    Func doSparkasse()
    Local $runAppl1, $runAppl2, $runAppl3, $dlgName, $dlgText, $dlg, $lwFloppy
    ;
    $dlgName = "Bankaufruf"
    $dlgText = "!! ACHTUNG !! ---- !! ACHTUNG !! ---- !! ACHTUNG !!" & chr(13) & _
    "================================" & chr(13) & chr(13) & _
    "1. Floppy " & chr(34) & "Bank-Security" & chr(34) & " eingelegt ?" & chr(13) & chr(13) & _
    "2. Bevor Sie mit " & chr(34) & "OK" & chr(34) & " fortsetzen, bitte alle momentan geöffneten " & chr(13) & _
    " Browser- und/oder Notepad-Instanzen schließen." & chr(13) & chr(13)
    $dlg = MsgBox(33, $dlgName, $dlgText)
    If $dlg = 1 then
    $lwFloppy = "A:\"
    If DriveStatus($lwFloppy) = "READY" Then
    $runAppl1 = "C:\windows\system32\notepad.exe A:\Zugang.txt"
    $runAppl2 = chr(34) & "C:\Programme\Internet Explorer\iexplore.exe " & chr(34) & _
    chr(34) & "https://banking.sparkasse-msh.de/cgi/anfang.cgi" & chr(34)
    $runAppl3 = "E:\Win-Prog\CCleaner\CCleaner.exe /Auto"
    Run($runAppl1, "A:\", @SW_RESTORE)
    RunWait($runAppl2, "", @SW_MAXIMIZE)
    $dlg = WinActivate("Zugang.txt - Editor", "")
    $dlg = WinClose("Zugang.txt - Editor", "")
    while DriveStatus($lwFloppy) = "READY"
    $dlgText = "Nicht vergessen:" & chr(13) & "FLOPPY RAUSNEHMEN !!"
    $dlg = MsgBox(65, $dlgName, $dlgText)
    If $dlg = 2 Then
    $runAppl1 = ""
    $runAppl2 = ""
    $runAppl3 = ""
    $dlg = ""
    $dlgName = ""
    $dlgText = ""
    $lwFloppy = ""
    Exit
    EndIf
    WEnd
    If $dlg = 1 Then Run($runAppl3, "", @SW_HIDE)
    ElseIf DriveStatus($lwFloppy) = "NOTREADY" Then
    $dlgText = "Floppy " & chr(34) & "Bank-Security" & chr(34) & " ist nicht eingelegt!" & chr(13) & _
    "Soll der Vorgang wiederholt werden?"
    $dlg = MsgBox(52, $dlgName, $dlgText)
    If $dlg = 6 then call(doSparkasse())
    EndIf
    EndIf
    ;
    $runAppl1 = ""
    $runAppl2 = ""
    $runAppl3 = ""
    $dlg = ""
    $dlgName = ""
    $dlgText = ""
    $lwFloppy = ""
    ;
    EndFunc

    [/autoit]

    Warte auf einen Vorschlag, vielen Dank,

    HalleMike

    Edit BugFix: Bitte immer Code-Tags verwenden, habs mal für dich gemacht.

    Einmal editiert, zuletzt von BugFix (21. Mai 2012 um 19:18)

  • Hallo BugFix, Dank für die prompte Antwort un die Korrektur meines Eintrags hier. Sorry - Anfängerfehler!
    Nun zu Deiner Anwort: Wie kann ich IE-Instanzen abfragen? Denn: Wenn ich die IE-Instanz identifizieren könnte, könnte ich mich doch auch in meinem Script auf die vom Script eröffnete IE-Instanz beziehen und eine "Bremse" einbauen, die solange aktiv ist, wie die vom Script eröffnete IE-Instanz existiert. Ich weiß bloß nicht, wie ich diese eindeutige Instanz-ID auslesen und weiterverwenden kann.
    Vielleicht bin ich doch noch zu sehr Anfänger unter all euch Profis .... hoffe dennoch auf Hilfe.

    MfG., HalleMike

  • Mit _IEAttach kann ich auf die Instanzen zugreifen, richtig! Ich möchte mein Script aber so haben, dass es unabhängig von irgendwelchen bereits bestehenden IE-Instanzen funktioniert. Habe auch eine Lösung gefunden:

    Spoiler anzeigen
    [autoit][/autoit] [autoit]

    [autoit]

    [/autoit][/autoit]


    Auf jeden Fall war der Hinweis auf die IE.au3 Gold wert. Vielen Dank nochmal, BugFix

    MfG., HalleMike

    Ps.: Irgendwie habe ich immer noch Probleme mit der Prozedur "Code einfügen" hier in einen Beitrag. Gibt's da irgendwo 'ne Anleitung?

    Einmal editiert, zuletzt von HalleMike (22. Mai 2012 um 16:34)