GuiCtrlSetData Fragestellung

  • Hallo,

    ich hänge grad an einer Stelle meines Projekts fest an der ich Input Felder eines von mir erstellen GUI´s mit Daten ausfüllen lassen möchte.
    Diese Daten sind mehr oder weniger 1-2 Buchstaben/Zahlen/Zeichen Kombinationen.
    Nun hab ich es mit GuiCtrlSetDate probiert, was auch super geklappt hat, leider habe ich bemerkt, dass er nun die Daten in einer Endlosschleife in die Input Felder schreibt.

    Dort liegt mein Problem, ich kann nun nicht mehr selber in die Input Felder schreiben, da es immer wieder überschrieben wird.
    Hab schon versucht eine While Schleife zu basteln, da ich dachte, dass ich so das ganze nur einmal durchlaufen lassen kann und danach selbst die Daten ändern kann.
    Aber leider läuft die Funktion GuiCtrlSetDate unbeirrt weiter und ich habe keine Ahnung mit welcher Funktion ich eine einmalige Eintragung der Daten erreiche oder wie ich die vorhandene Funktion umändern muss.

    Ich hoffe ihr könnt mein Problem nachvollziehen und habt eine Lösung parat.

    Mfg
    Limited

    4 Mal editiert, zuletzt von Limited (31. Januar 2010 um 15:28)

  • [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=c:\users\andi\desktop\starter.kxf
    $Form2 = GUICreate("Starter", 412, 314, 783, 434)
    GUISetIcon("D:\005.ico")
    GUICtrlCreateTab(8, 8, 396, 256)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Daten")
    $Label1 = GUICtrlCreateLabel("Gibt hier nur das Passwort für das Programm ein", 24, 48, 361, 18)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Input1 = GUICtrlCreateInput("", 144, 72, 121, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlCreateLabel("Geben sie hier den Pfad zu dem Programm an.", 112, 120, 195, 18)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Input2 = GUICtrlCreateInput("", 72, 144, 273, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Button4 = GUICtrlCreateButton("...", 192, 168, 35, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    GUICtrlCreateTabItem("")
    $Button1 = GUICtrlCreateButton("&OK", 166, 272, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("&Abbrechen", 246, 272, 75, 25, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("&Hilfe", 328, 272, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Opt("WinTitleMatchMode", 2)

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

    While 1
    $nMsg = GUIGetMsg()

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

    $check = FileExists(@ScriptDir & "\Daten.ini")
    $Master = ("test")

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

    If $check = 1 Then

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

    $Passwort = IniRead(@ScriptDir & "\Daten.ini", "Daten", "Passwort", "Fehler")
    $Pfad = IniRead(@ScriptDir & "\Daten.ini", "Daten", "Pfad", "Fehler")
    $Passwortu = _StringEncrypt(0, $Passwort, $Master)

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

    GUICtrlSetData($Input1, $Passwortu)
    GUICtrlSetData($Input2, $Pfad)

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

    Else

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

    EndIf

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button4

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

    $Path = FileSelectFolder("Ordner auswählen","",3,@DesktopDir)
    If Not @error Then GUICtrlSetData($Input2,$Path)

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

    Case $Button1

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

    $readpass = GUICtrlRead($Input1)
    $readpfad = GUICtrlRead($Input2)

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

    If $read1 = ("") or $read2 = ("") Then

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

    MsgBox(0, "Fehler", "Bitte geben sie sowohl das Passwort als auch den Pfad an.")
    Exit

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

    Else

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

    $Passwortv = _StringEncrypt(1, $readpass, $Master)

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

    IniWrite(@ScriptDir & "\Daten.ini", "Daten", "Passwort", $Passwortv)
    IniWrite(@ScriptDir & "\Daten.ini", "Daten", "Pfad", $readpfad)

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

    Run($readpfad)
    WinWaitActive("Mode Activation Dialog.")
    Send($readpass)
    Sleep(200)
    Send("{Enter}")

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

    EndIf

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

    Case $Button2
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Vielleicht so?
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=c:\users\andi\desktop\starter.kxf
    $Form2 = GUICreate("Starter", 412, 314, 783, 434)
    GUISetIcon("D:\005.ico")
    GUICtrlCreateTab(8, 8, 396, 256)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Daten")
    $Label1 = GUICtrlCreateLabel("Gibt hier nur das Passwort für das Programm ein", 24, 48, 361, 18)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Input1 = GUICtrlCreateInput("", 144, 72, 121, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlCreateLabel("Geben sie hier den Pfad zu dem Programm an.", 112, 120, 195, 18)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Input2 = GUICtrlCreateInput("", 72, 144, 273, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Button4 = GUICtrlCreateButton("...", 192, 168, 35, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    GUICtrlCreateTabItem("")
    $Button1 = GUICtrlCreateButton("&OK", 166, 272, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("&Abbrechen", 246, 272, 75, 25, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("&Hilfe", 328, 272, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Opt("WinTitleMatchMode", 2)

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

    $check = FileExists(@ScriptDir & "\Daten.ini")
    $Master = ("test")

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

    If $check = 1 Then

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

    $Passwort = IniRead(@ScriptDir & "\Daten.ini", "Daten", "Passwort", "Fehler")
    $Pfad = IniRead(@ScriptDir & "\Daten.ini", "Daten", "Pfad", "Fehler")
    $Passwortu = _StringEncrypt(0, $Passwort, $Master)

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

    GUICtrlSetData($Input1, $Passwortu)
    GUICtrlSetData($Input2, $Pfad)

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

    EndIf

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button4

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

    $Path = FileSelectFolder("Ordner auswählen", "", 3, @DesktopDir)
    If Not @error Then GUICtrlSetData($Input2, $Path)

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

    Case $Button1

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

    $readpass = GUICtrlRead($Input1)
    $readpfad = GUICtrlRead($Input2)

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

    If $readpass = ("") Or $readpfad = ("") Then

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

    MsgBox(0, "Fehler", "Bitte geben sie sowohl das Passwort als auch den Pfad an.")
    Exit

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

    Else

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

    $Passwortv = _StringEncrypt(1, $readpass, $Master)

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

    IniWrite(@ScriptDir & "\Daten.ini", "Daten", "Passwort", $Passwortv)
    IniWrite(@ScriptDir & "\Daten.ini", "Daten", "Pfad", $readpfad)

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

    Run($readpfad)
    WinWaitActive("Mode Activation Dialog.")
    Send($readpass)
    Sleep(200)
    Send("{Enter}")

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

    EndIf

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

    Case $Button2
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Ändert sich leider garnichts, an die Möglichkeit hatte ich auch schon gedacht, führt aber leider zum gleichen Ergebniss.


    Edit: Hat nun doch geklappt, hatte anscheinend nach dem ändern des Quellcodes nicht richtig abgespeichert und deshalb nochmal mit dem alten Code getestet.
    Läuft nun einwandfrei und hing wirklich nur an der While Schleife^^

    Edit2: Habe nun noch eine weitere Frage. Kann Autoit kein "!" per Send() Befehl schreiben?
    Wenn ich mit GuiCtrlSetData ein Input Feld mit einem String ausfüllen lasse, geht das auch wenn dort ein "!" enthalten ist.
    Nun soll er später diesen String aber nochmal selbst schreiben(als Passwort in ein zuvor geöffnetes Programm), lässt dabei aber jedesmal das "!" aus. Mach ich wieder etwas falsch oder kann AutoIt ein "!" nicht verarbeiten?

    2 Mal editiert, zuletzt von Limited (31. Januar 2010 um 11:58)

  • das ! hat bei send eine spezielle funktion. es steht für das drücken der Alt-Taste.

    Wenn du etwas genauso senden willst wie es im send steht würde ich die flag des send befehls nutzen, also so:

    [autoit]

    Send('Dieser Text sollte trotz ! richtig gesendet werden ;-)', 1)

    [/autoit]
  • Danke, jetzt funktioniert es endlich wie es soll, mal schaun ob sich später noch weitere Fragen ergeben, jetzt kann ich erstmal weiter arbeiten :)