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
#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)
_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")
;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
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