Wie stelle ich die Fehlerungsuche bei IE.au3 an ?

  • Hallo zusammen,

    ein paar Entwickler aus unserer Firma haben folgenden Code gescriptet. Soweit ich weiss wurde das gemacht, damit unsere Java Anwendung die Anmeldedaten in die IE Anmeldemaske pipen kann - und das auch unter Windows 7. Denn unter Windows XP geht das irgendwie auch ohne Autoit, aber unter Windows 7 wurde hier Autoit als Zwischen Tool verwendet.

    Hier mal das Script:

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    ;Einfaches anmelden am portal und oeffnen eines lokalen BGS
    ;Autoit-Version:3.2
    ;
    ;$CmdLine[1] = url to browse first e.g.: https://www.schnickschnackportal.de/test
    ;$CmdLine[2] = username
    ;$CmdLine[3] = password
    ;$CmdLine[4] = behnummer
    ;$CmdLine[5] = atbrolle
    ;$CmdLine[6] = file to load (optiona="")
    ;
    ; e.g.:
    ; LoginAndOpenBGS.au3 https://www.schnickschnackportal.de/test
    ;
    Opt("TrayIconHide", 1) ;0=show, 1=hide tray icon
    $oIE = _IECreate ($CmdLine[1] & "/logout.jsp", 1, 0)
    ;Pruefen ob ein Objekt erzeugt wurde
    If IsObj($oIE) Then
    $oIE.visible=0 ; hides it
    ;;If @extended Then
    ;; ;MsgBox(0, "", "An existierenden Browser angehaengt")
    ;;Else
    ;; ;MsgBox(0, "", "Neuen Browser erzeugt")
    ;;EndIf
    ;;warten bis die Seite komplett geladen wurde
    ;_IELoadWait($oIE)
    ;_IENavigate($oIE ,$CmdLine[1])
    ;_IELoadWait($oIE)
    ;;Erzeugen eines HTML-Formular-Objekts mit Hilfe des Formularnamens
    ;$oForm = _IEFormGetObjByName($oIE, "loginForm")
    ;;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
    ;$oUsername = _IEFormElementGetObjByName($oForm, "j_username")
    ;;Setzen des Formularfeldinhalts
    ;_IEFormElementSetValue($oUsername, $CmdLine[3])
    ;;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
    ;$oPasswd = _IEFormElementGetObjByName($oForm, "j_password")
    ;;Setzen des Formularfeldinhalts
    ;_IEFormElementSetValue($oPasswd, "thrthr")
    ;;Absenden des Formulars
    ;_IEFormSubmit($oForm)

    [/autoit] [autoit][/autoit] [autoit]

    _IELoadWait($oIE)
    _IENavigate($oIE ,$CmdLine[1] & "/authorize/j_spring_security_check?j_username="&$CmdLine[2]&"&j_password="&$CmdLine[3]&"&j_behnummer="&$CmdLine[4]&"&j_atbrolle="&$CmdLine[5]&"")
    _IELoadWait($oIE)
    ;get title (if you are logged in
    $title = _IEPropertyGet($oIE, "title")

    [/autoit] [autoit][/autoit] [autoit]

    ;MsgBox(0,"titel 1",$title); for debugging

    [/autoit] [autoit][/autoit] [autoit]

    ;If (StringInStr ($title, "welcome", 0 ) | TODO or for old versions
    If (StringInStr ($title, "Home", 0 )) Then
    ; wir haben den login geschafft, nun koennen wir den explorer auch visible setzten
    $oIE.visible=1 ; unhides it, now that we've hidden what we don't want
    $oIE.AddressBar = 0 ; turn off all four IE Bars - works on 3rd party bars too, mostly.
    $oIE.MenuBar = 0
    $oIE.StatusBar = 0
    $oIE.ToolBar = 0
    $oIE.Width = 1080
    $oIE.Height = 800
    $oIE.Left = 0
    $oIE.Top = 0
    ;und den BGS laden (falls uebergeben
    if (StringLen ($CmdLine[6]) > 1) Then
    ;MsgBox(0,"titel 2",$title)
    ;_IENavigate($oIE, @ScriptDir & "/loading.html") ; kann verwendet werden um einen Hinweistext einzublenden, während das XFDL-Plugin lädt.
    _IENavigate($oIE ,$CmdLine[6], 0)
    EndIf
    $hWnd_Active = _IEPropertyGet($oIE, "hwnd")
    While WinExists ($hWnd_Active)
    Sleep(1000)
    $hWnd_Active = _IEPropertyGet($oIE, "hwnd")
    Wend
    Exit
    EndIf
    MsgBox(0,"schnickschnack client","Anmeldung konnte nicht verarbeitet werden")
    Exit
    EndIf
    ;wenn kein Objekt erzeugt wurde, Fehlermeldung ausgeben.
    MsgBox(0,"schnickschnack client - Erstellen des IE-Objekts fehlgeschlagen","Es konnte keine neue InternetExplorer-Instanz erzeugt werden!")
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Nachdem ich unsere Java Anwendung gestartet habe, bekomme ich nach einer Zeit X folgende Fehlermeldung:

    [Blockierte Grafik: http://www.hasenmueller.de/files4forum/pics4forum_8.png]

    Da unser Autoit Script ja nur 80 Zeilen hat, gehe ich mal davon aus, das es irgend ein Problem bei der Parameter Übergabe entsteht. Zeile 2602 wird ja wohl in der IE.au3 sein.

    Ich habe leider überhaupt keinen Plan, was hier genau passiert, bzw. wie ich hier nach dem Fehler suchen könnte.

    Könnt Ihr mir hierbei bitte behilflich sein ?

    Gruss Hassan

  • Zeile 2602 wird ja wohl in der IE.au3 sein.


    Es ist Zeile 2602 da das Programm Compiliert ist, und der Quelltext ja nun nicht direkt am anfang der datei steht.
    Probier das Skript mal uncompiliert aus und guck dann die Fehlermeldung.

  • Ich durche gerade das Forum, finde aber nicht das richtige.

    Hat mir jemande eine Anleitung, wie ich via URL Übergabe mich an einem Portal anmelden kann.

    Folgende Funktionen sollten erstmal da sein.

    1.) Aufruf einer Logout Seite
    2.) Die URL via Kommandzeilen Parameter zusammen bauen
    3.) Die neue URL aufrufen.

    Gruss und Danke

    Hassan

  • Mit der Angabe der URL wird es in manchen Foren schwierig, da mann nicht einfach https://autoit.de/www.dasforum.d…inname/PW=12345
    sondern das es meistens Verschlüsselt ist.
    Ich würde es dann über TCP machen, denn du kannst mit dem FF Add-On Live http-headers überprüfen was für Paket du sendest.
    Oder du benutzt IE.au3 bzw. FF.au3.
    Es gibt ein gutes TUT für die TCP Anmeldung unter YouTube.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Kommando zurück !!

    Also das Script funktioniert. Nur haben unsere Entwickler dummerweise alle Admin Rechte.

    Ich habe mir auf meinem Notebook (Windows 7) nur noch Benutzerrechte gegeben (UAC Regler ist ganz oben)

    Wenn ich jetzt unsere Java Anwendung als normaler Benutzer starte, welche dann später die Autoit.exe startet, welche wiederrum den InternetExplorer mit Parameter Übergabe startet, dann geht nur der IE mit der URL auf, jedoch kommt es nicht zu einer automatischen Anmeldung.

    Wenn ich obiges als Administrator ausführen geht alles ohne Probleme.

    Die kompilierte EXE liegt unterhalb der %ProgramFiles% Verzeichnis

    Da die Fehlermeldung ja Zeilenmäßig aus dem IE.au3 kommt, stellt sich mir hier die Frage, wie Ihr das bisher gemacht habt, damit das ein normaler Benutzer starten kann.

    Oder habt Ihr noch eine andere Idee.

    Gruss Hassan

  • So hier bin ich wieder.

    Wir haben das Projekt ein paar Tage ruhen lassen, aber jetzt geht es wieder ans Werk.

    Folgendes steht in der Hilfe für _IECreate

    Kann mir bitte einer helfen, wie der Code in meinem Fall aussehen soll, wenn ich _IEAttach verwenden möchte. Die restlichen Punkte gehen entweder aus Sicherheits Gründen nicht, oder sind bereits umgesetzt.

    Gruss Hassan

  • Folgendes fällt noch auf. Wenn ich den Code erst einmal kürze, nämlich so

    [autoit]

    #include <IE.au3>
    ;Einfaches anmelden am portal und oeffnen eines lokalen BGS
    ;Autoit-Version:3.2
    ;
    ;$CmdLine[1] = url to browse first e.g.: https://www.fqdn.tld
    ;$CmdLine[2] = username
    ;$CmdLine[3] = password
    ;$CmdLine[4] = behnummer
    ;$CmdLine[5] = atbrolle
    ;$CmdLine[6] = file to load (optiona="")
    ;
    ; e.g.:
    ; LoginAndOpenBGS.au3 https://www.fqdn.tld
    ;
    Opt("TrayIconHide", 0) ;0=show, 1=hide tray icon
    $oIE = _IECreate($CmdLine[1] & "/logout.jsp", 1, 1)
    If @extended Then
    MsgBox(0, "", "An existierenden Browser angehängt")
    Else
    MsgBox(0, "", "Neuen Browser erzeugt")
    EndIf

    [/autoit]

    und diesen als normaler Benutzer ausführe, bekomme ich überhaupt keine Messageboxen angezeigt. Das ganze als lokaler Administrator ausgeführt funktioniert.

    Es muss doch irgendeinen Ansatz geben, so ein automatisiertes Browserscript als normaler Benutzer laufen zu lassen!

    Gruss Hassan