Benötige Hilfe bei GUIs!

  • Hallo erstmal an alle =)

    Also ich benötige, wie ich oben schon geschrieben habe, Hilfe bei der Verwendung einer GUI.
    Ich habe mir mit dem Programm "AutoIT Koda Designer" eine GUI erstellt.

    aber ich weiß nicht was ich damit machen soll =/
    Wenn ich es in mein script einbaue ist entweder nichts von meiner GUI zu sehen und wenn ich es ganz oben einbaue dann sehe ich nur die GUI aber keine Inputbox o.ä.

    Danke schonmal für eure Hilfe. =)

    LG

    3 Mal editiert, zuletzt von Bluber (26. Mai 2010 um 16:32)

  • 1. wenn du die GUI von anfang an haben willst solltest du es natürlich vor den Hauptschleife o.ä. platzieren.
    2. das kein Input angezigt wird ist kein wunder, da du gar kein input ctl erstellst sondern nur ein Gruppe und 2 Button.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Es ist so das wen du mit Gui´s abeitest die art der Programier Sprach sich etwas verändert und du nich einfach irgendwas da rein bauen kannst

  • Du darfst die Input Box natürlich nicht separat (also außerhalb der GUI) erstellen, wenn diese in der GUI sein soll. ;)


    Hier hast du dein GUI mit einer Inputbox, als Beispiel.
    Du kannst in Koda entsprechend das Feld "Inputbox" auswählen und so direkt platzieren.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Dialog", 379, 147, 347, 263)
    GUISetBkColor(0x6D6D6D)
    $GroupBox1 = GUICtrlCreateGroup("", 40, 17, 300, 73)
    $Input1 = GUICtrlCreateInput("Please insert text here", 54, 48, 273, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("OK", 65, 99, 75, 25)
    $Button2 = GUICtrlCreateButton("Cancel", 242, 99, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]
  • Das machst du in der while-Schleife, indem du dort per case the Variable des Buttons/... aufrufst.

    z.B.

    [autoit]


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

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

    Case $Button1
    MsgBox(64, "OK!", "Du hast auf Ok geklickt")

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

    Case $Button2
    MsgBox(64, "Abbrechen!", "Du hast auf Abbrechen geklickt")

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

    EndSwitch
    WEnd

    [/autoit]

    Die Variablen $Button1 usw. natürlich durch die Variablennamen der in der GUI angegebenen ersetzen.

    Siehe dazu auch der Hilfe unter "GUICreate" oder GUIGetMsg() bzw. GUISetOnEvent()

  • Du kannst auch im GuiOnEventMode Programmieren dann musst du das so machen

    Spoiler anzeigen
    [autoit]


    Opt("GuiOnEventMode", 1)

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

    $Form1 = GUICreate("Dialog", 378, 146, 347, 263)
    GUISetIcon("Images\Icon.ico")
    GUISetBkColor(0x6D6D6D)
    $GroupBox1 = GUICtrlCreateGroup("", 40, 17, 300, 73)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("&OK", 65, 99, 75, 25, 0)
    GuiCtrlSetOnEvent(-1, "_OK")
    $Button2 = GUICtrlCreateButton("&Cancel", 242, 99, 75, 25, 0)
    GuiCtrlSetOnEvent(-1, "_Cancel")
    GUISetState(@SW_SHOW)

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

    Func _OK
    MsgBox(0, "OK", "Du hast OK gecklickt!")
    EndFunc

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

    Func _Cancel
    MsgBox(0, "Cancel", "Du hast Cancel geklickt!")
    EndFunc

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


    Würde sich evtl. noch empfehlen mit OnAutoITExitRegister den GuiOnEvent mode zu beenden:

    Spoiler anzeigen
    [autoit]


    OnAutoITExitRegister("_Exit")

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

    Func _Exit
    Opt("GuiOnEventMode", 0)
    EndFunc

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    Opt("GuiOnEventMode", 1)

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

    $Form1 = GUICreate("Dialog", 378, 146, 347, 263)
    GUISetIcon("Images\Icon.ico")
    GUISetBkColor(0x6D6D6D)
    $GroupBox1 = GUICtrlCreateGroup("", 40, 17, 300, 73)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("&OK", 65, 99, 75, 25, 0)
    GuiCtrlSetOnEvent(-1, "_OK")
    $Button2 = GUICtrlCreateButton("&Cancel", 242, 99, 75, 25, 0)
    GuiCtrlSetOnEvent(-1, "_Cancel")
    GUISetState(@SW_SHOW)

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

    Func _OK
    MsgBox(0, "OK", "Du hast OK gecklickt!")
    EndFunc

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

    Func _Cancel
    MsgBox(0, "Cancel", "Du hast Cancel geklickt!")
    EndFunc

    [/autoit]

    so würde es nicht funktionieren.

    aber so:

    Spoiler anzeigen
    [autoit]

    Opt("GuiOnEventMode", 1)

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

    $Form1 = GUICreate("Dialog", 378, 146, 347, 263)
    GUISetIcon("Images\Icon.ico")
    GUISetBkColor(0x6D6D6D)
    $GroupBox1 = GUICtrlCreateGroup("", 40, 17, 300, 73)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("&OK", 65, 99, 75, 25, 0)
    GuiCtrlSetOnEvent(-1, "_OK")
    $Button2 = GUICtrlCreateButton("&Cancel", 242, 99, 75, 25, 0)
    GuiCtrlSetOnEvent(-1, "_Cancel")
    GUISetState(@SW_SHOW)

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

    While 1
    sleep(10)
    Wend

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

    Func _OK
    MsgBox(0, "OK", "Du hast OK gecklickt!")
    EndFunc

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

    Func _Cancel
    MsgBox(0, "Cancel", "Du hast Cancel geklickt!")
    EndFunc

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Ach ja stimmt hab ich vergessen sry
    Musst natürlich immer eine Endlosschelife einbauen, da ansonsten das Programm sofort beendet wird..

    Gut dass ich anfänger bin sonst wäre das jetzt peinlich xD

  • Wichtig: Wenn du mit Inputs innerhalb der GUI arbeitest:
    Der Wert kann nur mit GUICtrlRead($ContolInput) ausgelesen werden:
    Ich hab das am Anfang immer falsch gemacht (mit der Variable des Ctrls) ^^

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("GUI-Beispiel", 219, 41, 192, 114)
    $Input1 = GUICtrlCreateInput("Hier Text eingeben", 8, 8, 121, 21)
    $Button1 = GUICtrlCreateButton("Zeige Inhalt", 136, 8, 74, 22, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Inhalt = GUICtrlRead($Input1) ; gaanz wichtig: verwende niemals die Variable des Ctrls, um den Inhalt auszulesen, (immer mit GUICtrlRead()
    MsgBox(0, "Input1", $Inhalt)
    EndSwitch
    WEnd

    [/autoit]
  • Ich wollte jetzt eine Fuktion ausführen lassen wenn man einen Button drückt jedoch funktioniert es leider nicht so ganz =/

    Hab ich irgendwas falsch gemacht?

    Bei dieser Funktion sollen nur Tastendrücke gesendet werden also benötige ich ja nicht mit "GUICtrlRead" irgendwas auszulesen, oder?

  • Das ist der Code aber ich find da keinen Fehler =/
    Die Funktion funktioniert, das hatte ich schon ohne GUI getestet.

  • So und btw. Danke für eure Hilfe und eure Geduld mit mir :D

  • Die Funktion wird gestartet...
    Aber deine Funktion ließt nicht den Inhalt der Inputs aus sondern verwendet deren ControlIDs :rolleyes: .
    Ich glaube du willst es so :D.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Tabbed Notebook Dialog", 405, 277, 303, 219)
    GUISetIcon("images\Icon.ico")
    $PageControl1 = GUICtrlCreateTab(8, 8, 396, 256)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Table1")
    $Label1 = GUICtrlCreateLabel("Label1", 24, 48, 364, 82)
    GUICtrlSetFont(-1, 11, 400, 0, "Arial")
    $InputZeit = GUICtrlCreateInput("Zeit", 32, 176, 353, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF00FF)
    $Zeit1 = $Zeit * 1000
    $InputTaste = GUICtrlCreateInput("Taste", 32, 144, 353, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetColor(-1, 0x00FF00)
    $Button4 = GUICtrlCreateButton("Ok", 32, 208, 353, 33, 0)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $TabSheet2 = GUICtrlCreateTabItem("Table2")
    $Label2 = GUICtrlCreateLabel("Label2", 24, 40, 372, 210)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $TabSheet3 = GUICtrlCreateTabItem("Table3")
    $Label3 = GUICtrlCreateLabel("Label3", 16, 40, 372, 209)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

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

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

    Func Start()
    $Taste = GUICtrlRead($InputTaste)
    $Zeit = GUICtrlRead($InputZeit)
    Select
    Case $Taste = "f1"
    Sleep(10000)
    While 1
    Send("{F1}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f2"
    Sleep(10000)
    While 1
    Send("{F2}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f3"
    Sleep(10000)
    While 1
    Send("{F3}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f4"
    Sleep(10000)
    While 1
    Send("{F4}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f5"
    Sleep(10000)
    While 1
    Send("{F5}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f6"
    Sleep(10000)
    While 1
    Send("{F6}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f7"
    Sleep(10000)
    While 1
    Send("{F7}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f8"
    Sleep(10000)
    While 1
    Send("{F8}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f9"
    Sleep(10000)
    While 1
    Send("{F9}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f10"
    Sleep(10000)
    While 1
    Send("{F10}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f11"
    Sleep(10000)
    While 1
    Send("{F11}{ENTER}")
    Sleep($Zeit1)
    WEnd
    Case $Taste = "f12"
    Sleep(10000)
    While 1
    Send("{F12}{ENTER}")
    Sleep($Zeit1)
    WEnd

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

    EndSelect
    EndFunc ;==>Start

    [/autoit]
  • So und btw. Danke für eure Hilfe und eure Geduld mit mir :D

    für was braucht man den soetwas :?: Etwa für einen Spiele- oder SpamBOT Lies dir daher bitte noch einaml die Forenregeln durch

    mfg (AutoBert

  • nein nichts dergleichen^^
    btw danke funktioniert =)

    Einmal editiert, zuletzt von Bluber (26. Mai 2010 um 00:17)