ich raff es nicht

  • Hallo
    habe mit autoit noch nicht viel erfahrung
    Folgendes versuche ich:

    Ich lese ein paar Registry Werte aus, vergleiche die und mache davon in Abhängigkeit ein Formular auf, das 2 Eingabefelder enthalten soll (Username, passwort). Mit Inputboxen hat das auch schon alles einwandfrei funktioniert. Mit dem Formular komme ich absolut nicht klar.

    Entweder bleibt mein Fenster auf unbegrenzt stehen oder mein cwblogon Befehl in der Funktion loopt sich zu Tode.

    Hier mal der Code:
    #include <string.au3>
    #include <GUIConstants.au3>


    Run("regedit /s D:\SoftM_Start\Reg\Alkor_Suite_T0.reg")


    Dim $useridout
    Dim $useridin
    Dim $useridstd
    Dim $useridSoftm
    Dim $userpass
    Dim $userpassver
    Dim $userpassent
    Dim $userpassreg
    Dim $NameAS400
    Dim $DLL
    Dim $Temp
    Dim $FehlerCode
    Dim $nMsg
    Dim $start_B

    $NameAS400 = RegRead("HKEY_CURRENT_USER\Software\SoftM\Global\Parametersteuerung", "System")
    $useridout = RegRead("HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication", "User ID")
    $useridstd = RegRead("HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication", "Signon Mode")
    $useridsoftm = RegRead("HKEY_CURRENT_USER\Software\SoftM\Global\Environment", "StandardUser")
    $userpassreg = RegRead ( "HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication" ,"User PW")

    If ($useridsoftm = "" and $useridout = "") or ($useridsoftm = "" and $useridout <> "") Then
    ;Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    GUICreate("Anmeldung AS/400", 200, 200)

    GUICtrlCreateLabel("AS/400 UserName:", 42, 35, 111, 17)
    $useridin = GUICtrlCreateInput("", 42, 50, 121, 21)
    GUICtrlCreateLabel("AS/400 Passwort:", 42, 85, 111, 17)
    $userpass = GUICtrlCreateInput("", 42, 100, 121, 21)


    $okbutton = GUICtrlCreateButton("OK", 70, 145, 60)

    GUISetState(@SW_SHOW)

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $start_B
    _start($NameAS400, GUICtrlRead($useridin), GUICtrlRead($userpass))
    EndSwitch
    WEnd

    EndIf
    Func _start($NameAS400, $useridin, $userpass)
    RegWrite ( "HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication" ,"User ID", "REG_SZ", $useridin)
    ShellExecute("C:\Program Files\IBM\Client Access\cwblogon", " " & $NameAS400 & " /u " & $useridin & " /p " & $userpass,@SW_HIDE)
    $userpassver = _StringEncrypt(1, $userpass, "passwortencrypten", 2)
    RegWrite ( "HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication" ,"User PW", "REG_SZ", $userpassver)
    ;ShellExecute($run, '', '', '', @SW_HIDE)
    EndFunc ;==>_start


    Vielleicht kann mir jemand helfen ??!??

  • Hi,
    vielleicht läuft es ja so:

    Spoiler anzeigen
    [autoit]

    #include <string.au3>
    #include <GUIConstants.au3>

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

    Run("regedit /s D:\SoftM_Start\Reg\Alkor_Suite_T0.reg") ;Warum nicht gleich alle Reg-Keys per AutoIt schreiben???

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

    Dim $useridout
    Dim $useridin
    Dim $useridstd
    Dim $useridSoftm
    Dim $userpass
    Dim $userpassver
    Dim $userpassent
    Dim $userpassreg
    Dim $NameAS400
    Dim $DLL
    Dim $Temp
    Dim $FehlerCode
    Dim $nMsg
    Dim $start_B

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

    $NameAS400 = RegRead("HKEY_CURRENT_USER\Software\SoftM\Global\Parametersteuerung", "System")
    $useridout = RegRead("HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication", "User ID")
    $useridstd = RegRead("HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication", "Signon Mode")
    $useridsoftm = RegRead("HKEY_CURRENT_USER\Software\SoftM\Global\Environment", "StandardUser")
    $userpassreg = RegRead ( "HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication" ,"User PW")

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

    If ($useridsoftm = "" and $useridout = "") or ($useridsoftm = "" and $useridout <> "") Then
    ;Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    GUICreate("Anmeldung AS/400", 200, 200)
    GUICtrlCreateLabel("AS/400 UserName:", 42, 35, 131, 27)
    $useridin = GUICtrlCreateInput("", 42, 50, 121, 21)
    GUICtrlCreateLabel("AS/400 Passwort:", 42, 85, 111, 17)
    $userpass = GUICtrlCreateInput("", 42, 100, 121, 21)
    $okbutton = GUICtrlCreateButton("OK", 70, 145, 60)

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

    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $okbutton
    _start($NameAS400, GUICtrlRead($useridin), GUICtrlRead($userpass))
    EndSwitch
    WEnd
    Else
    if $NameAS400<>"" and $userpassreg And $useridout<>"" Then
    _start($NameAS400,$useridout,_StringEncrypt(0,$userpassreg,"passwortencrypten",2)) ;Ich hoffe ich habe die Variablen sinngemäss benutzt.
    EndIf
    EndIf

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

    Func _start($NameAS400, $useridin, $userpass)
    RegWrite ( "HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication" ,"User ID", "REG_SZ", $useridin)
    ShellExecute("C:\Program Files\IBM\Client Access\cwblogon.exe", " " & $NameAS400 & " /u " & $useridin & " /p " & $userpass,@SW_HIDE)
    $userpassver = _StringEncrypt(1, $userpass, "passwortencrypten", 2)
    RegWrite ( "HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\My Connections\"& $NameAS400 &"\Communication" ,"User PW", "REG_SZ", $userpassver)
    ;ShellExecute($run, '', '', '', @SW_HIDE)
    EndFunc ;==>_start

    [/autoit]


    Gruss
    eddy_erpel

    Einmal editiert, zuletzt von Eddy_Erpel (16. März 2007 um 15:25)

  • Hi Eddy,

    jetzt bist Du mir zuvor gekommen. ;)

    Vielleicht hättest Du noch erwähnen sollen, dass der OP statt

    Code
    Case $start_B

    lieber

    Code
    Case $okbutton

    nehmen sollte. Dann findet er den Unterschied etwas schneller. ;)

  • Super Leute.
    Vielen Dank.
    Bin gerade am Testen.
    Ohne das Forum wäre ich aufgeschmissen.