Anfängerfragen zur GUI(Checkbox,Inputbox und welches Gui Konzept)

  • Hallo Leser/in

    Das unten aufgeführte "roh" Script ist für eine Anwendung geschrieben und in der
    ursprünglichen Form (ohne die GUI Elemente) funktionfähig.

    Spoiler anzeigen

    #include <GUIConstants.au3>

    Opt ("GUIOnEventMode", 1)
    $mainwindow = GUICreate ("R-K-E", 400, 400) ; Funktion_Fenster_Layout
    GUISetOnEvent ($gui_event_close, "Terminate") ; Funktion_Exit_Gui
    GUISetState (@SW_SHOW)
    HotKeySet ("f", "PushKey") ; Funktion_Aktions_Taste
    HotKeySet ("+!d", "Terminate") ; Funktion_Exit_Taste
    While 1
    Sleep (100)
    WEnd

    Func PushKey ()
    Send ("1") ; Funktion_Taste 1
    Sleep (1000) ; Funktion_Delay
    Send ("2") ; Funktion_Taste 2
    Sleep (1000) ; Funktion_Delay
    Send ("3") ; Funktion_Taste 3
    Sleep (1000) ; Funktion_Delay
    Send ("4") ; Funktion_Taste 4
    Sleep (1000) ; Funktion_Delay
    Send ("5") ; Funktion_Taste 5
    Sleep (1000) ; Funktion_Delay
    Send ("6") ; Funktion_Taste 6
    Sleep (1000) ; Funktion_Delay
    Send ("7") ; Funktion_Taste 7
    Sleep (1000) ; Funktion_Delay
    Send ("8") ; Funktion_Taste 8
    Sleep (1000) ; Funktion_Delay
    Send ("9") ; Funktion_Taste 9
    Sleep (1000) ; Funktion_Delay
    Send ("0") ; Funktion_Taste 10
    EndFunc

    Func Terminate ()
    Exit 0
    EndFunc


    Nun sollte das Script um eine GUI erweitert werden, die folgende Eigenschaften hat:
    -Die Funktion_Aktions_Taste soll frei wählbar sein, also sprich ein Eingabefeld.
    -Die Funktion_Tasten 1 bis 10 und die Funktion_Delay sollen AN/AUS schaltbar sein
    und die Werte ebenfalls freiwählbar.

    Frage 1: Ist der OnEvent Modus die passende GUI für diese Art von Script?
    Frage 2: Also um die Werte beliebig verändern zukönnen muss ich doch eine Inputbox
    nehmen - wäre GUICtrlCreateInput oder InputBox(mit MessageLoop GUI) die angebrachte
    Variante?
    Frage 3: Für das AN/AUS denke ich ist eine Checkbox das richtige, aber wie muss
    die Syntax sein, damit nur die AN Werte im Script verarbeitet werden lauten?

    Also ich habe in vorherigen Versuchen für die Eingabe der Inputbox Variabelen
    gemacht, welche gleich zu den zudrückenden Funktions_Tasten bis10, dass aber
    leider fehlschlägt weil immer der Variabelnname gesendet wird. Ist das überhaupt der
    der richtige Lösungsansatz?

    Für Anregungen und Ratschläge wäre ich euch dankbar.

  • Hallo obs,

    zu Frage 1:

    • ist meiner Ansicht nach Geschmackssache, OnEvent erfordert evtl. ein Paar Zeilen mehr zum Tippen ist aber die sauberere Lösung
    • Bei MessageLoop brauchst du die Beispiele nicht an OnEvent anpassen, was aber nicht also schwer ist
    • Mann kann die beiden Stile auch mischen, habs mal in einem Post von Oscar (Mod) gesehen

    zu Frage 2: schau dir falls du dich für den OnEvent-Modus entscheidest mal meinen Post Anwendung mit mehreren Fenstern: Toolwindow aktiv, trotzdem reagiert Hauptfenster auf Anklicken an.

    zu Frage 3: such in der Hilfe nach GuiCtrlGetState zum lesen, bsw. falls du Programmtechnisch Werte setzen willst GuiCtrlSetSTate an

    zu deinen Versuchen mit Variablen, dies ist der richtige Ansatz, poste einfach mal einen Versuch und ich schaus mir bei Gelegenheit an.

    mfg (Auto)Bert

    • Offizieller Beitrag

    Ich hab mal schnell ein Beispiel gebastelt:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    Opt('GUIOnEventMode', 1)

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

    $hMainGui = GUICreate('Test')
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUICtrlCreateButton('Klick mich', 10, 10, 120, 25)
    GUICtrlSetOnEvent(-1, '_Test')
    GUISetState()

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

    While 1
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Test()
    $sText = 'Mieterbund rechnet mit hohen Nachzahlungen' & @CRLF & 'Mietern drohen nach Angaben des Deutschen Mieterbundes im Frühjahr 2009 saftige Heizkosten-Nachzahlungen von durchschnittlich 30 Prozent. "2008 war das Jahr der explodierenden Energiepreise", sagte Mieterbund-Präsident Franz-Georg Rips der Nachrichtenagentur dpa. Heizöl sei im Durchschnitt um etwa 30 Prozent und Gas etwa um 20 Prozent teurer geworden als im Vorjahr. "Die Zeche werden die Mieter 2009 zahlen müssen, wenn sie ihre Heizkostenabrechnung erhalten."' & @CRLF & @CRLF & '40 Prozent des Einkommens für Miete' & @CRLF & 'Rips zufolge sei für eine 80 Quadratmeter große Wohnung mit insgesamt 1200 bis 1300 Euro an Heizkosten zu rechnen. Auch insgesamt steige der Anteil am Nettoeinkommen, den Mieter für ihre Wohnung aufbringen müssen, weil die Kaltmieten wie auch andere Nebenkosten, etwa kommunale Gebühren, Müll und Abwasser, anzögen. Im Jahr 2009 würde der Anteil dieser Wohnkosten am Nettoeinkommen auf durchschnittlich 40 Prozent klettern, schätzt Rips. "Für einkommensschwächere Haushalte bedeutet die Preisentwicklung, dass sie mehr als 50 Prozent ihres Nettoeinkommens für Wohnung und Haushaltsenergie zahlen müssen."' & @CRLF & @CRLF & 'Mangel an Mietwohnungen?' & @CRLF & 'Zugleich warnt der Mieterbund vor einem zunehmenden Mangel an Mietwohnungen. Auch im vergangenen Jahr wurde wieder weniger neuer Wohnraum gebaut. Im neuen Jahr würden nach Schätzungen des Mieterbunds weniger als 200.000 Wohnungen fertig gestellt. "Davon entfallen ganze 50.000 auf Mietwohnungen, der Rest ist Eigentum", sagte Rips.' & @CRLF
    _StringDisplay($sText, 'Beispiel mit Zeilenumbruch am Editrand', $WS_VSCROLL) ; Zeilenumbruch am Editrand
    EndFunc

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

    ;===============================================================================
    ; Function Name..: _StringDisplay($sText[, $sTitle] [, $sEditStyle] [, $iWidth] [, $iHeight] [, $iLeft] [, $iTop])
    ; Description....: Zeigt einen beliebigen Text in einem Editfeld an
    ; Parameter(s)...: $sText = der anzuzeigende Text
    ; $sTitle = Fenstertitel (optional)
    ; $sEditStyle = Edit-Style (optional)
    ; $iWidth = Breite des Fensters (optional, Standard = 400 Pixel)
    ; $iHeight = Höhe des Fensters (optional, Standard = 300 Pixel)
    ; $iLeft = Abstand von links (optional, Standard = zentriert)
    ; $iTop = Abstand von oben (optional, Standard = zentriert)
    ; Return Value...: Der markierte Text wird als String zurückgegeben
    ; Author.........: Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _StringDisplay($sText, $sTitle = 'StringDisplay', $sEditStyle = -1, $iWidth = 400, $iHeight = 300, $iLeft = -1, $iTop = -1)
    If Not IsDeclared('BS_DEFPUSHBUTTON') Then Local Const $BS_DEFPUSHBUTTON = 0x00000001
    If Not IsDeclared('GUI_EVENT_CLOSE') Then Local Const $GUI_EVENT_CLOSE = 0xFFFFFFFD
    If Not IsDeclared('WS_EX_COMPOSITED') Then Local Const $WS_EX_COMPOSITED = 0x02000000
    If Not IsDeclared('WS_MAXIMIZEBOX') Then Local Const $WS_MAXIMIZEBOX = 0x00010000
    If Not IsDeclared('WS_MINIMIZEBOX') Then Local Const $WS_MINIMIZEBOX = 0x00020000
    If Not IsDeclared('WS_SIZEBOX') Then Local Const $WS_SIZEBOX = 0x00040000
    Local $iEventMode = Opt('GUIOnEventMode', 0)
    Local $hGui = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_COMPOSITED)
    Local $hEdit = GUICtrlCreateEdit($sText, 5, 5, $iWidth - 10, $iHeight - 65, $sEditStyle)
    GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
    Local $hClose = GUICtrlCreateButton('Close', $iWidth / 2 - 25, $iHeight - 55, 50, 22, $BS_DEFPUSHBUTTON)
    GUICtrlSetResizing(-1, 64 + 256 + 512)
    ControlFocus($hGui, '', $hClose)
    GUISetState(@SW_SHOW, $hGui)
    While True
    Switch GUIGetMsg()
    Case $hClose, $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd
    ControlFocus($hGui, '', $hEdit)
    Local $sSelectedText = ControlCommand($hGui, '', $hEdit, 'GetSelected', '')
    If @error Then $sSelectedText = ''
    GUIDelete($hGui)
    Opt('GUIOnEventMode', $iEventMode)
    Return $sSelectedText
    EndFunc ;==>_StringDisplay

    [/autoit]

    Innerhalb der Funktion _StringDisplay() wird der MessageLoop- und außerhalb der OnEvent-Mode benutzt.

  • Hallo Oscar ,

    gut dass du meine Falsche Wortwahl verbessert hast, bevor zuviele Hilferufe kommen. Noch besser ist dein Beispiel :thumbup:. Werd ich mir gleich in mein Example-Archiv legen.

    mfg (Auto)Bert

  • Hallo Oscar ,

    ich seh zwar dass du dir die Einstellung merkst,

    Spoiler anzeigen
    [autoit]

    Local $iEventMode = Opt('GUIOnEventMode', 0)

    [/autoit]

    aber schaltet du hiermit auch schon den OnEvenModus aus?
    das du in am Ende wieder auf den Ursprung schaltest hab ich gesehen.


    Mfg (Auto)Bert

    • Offizieller Beitrag

    Ja, der Trick hierbei ist, dass Opt die vorherige Einstellung zurückgibt.

    Zitat

    Returns the value of the previous setting for the option.

    Mit dem Befehl schaltet man also auf den MessageLoopMode um und in $iEventMode wird der vorherige Zustand gespeichert.
    Am Ende der Funktion schaltet man dann einfach wieder zurück.

  • Ok danke soweit erstmal für eure Ratschläge!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    $main_window = GUICreate ("R-K-E", 400, 400) ; Funktion_Fenster_Layout
    $label_window_hotkey = GUICtrlCreateLabel ("Gib deine bevorzugte Taste ein", 200, 360)
    $input_window_hotkey = GUICtrlCreateInput ("e", 5, 360) ; Hotkey

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

    $checkbox_window1 = GUICtrlCreateCheckbox ("An/Aus", 5, 20)
    $checkbox_window2 = GUICtrlCreateCheckbox ("An/Aus", 5, 40)
    $checkbox_window3 = GUICtrlCreateCheckbox ("An/Aus", 5, 60)
    $checkbox_window4 = GUICtrlCreateCheckbox ("An/Aus", 5, 80)
    $checkbox_window5 = GUICtrlCreateCheckbox ("An/Aus", 5, 100)
    $checkbox_window6 = GUICtrlCreateCheckbox ("An/Aus", 5, 120)
    $checkbox_window7 = GUICtrlCreateCheckbox ("An/Aus", 5, 140)
    $checkbox_window8 = GUICtrlCreateCheckbox ("An/Aus", 5, 160)
    $checkbox_window9 = GUICtrlCreateCheckbox ("An/Aus", 5, 180)
    $checkbox_window0 = GUICtrlCreateCheckbox ("An/Aus", 5, 200)

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

    $label_window1 = GUICtrlCreateLabel ("Zeit Taste 1", 80, 20) ; Beschriftung_Taste_1
    $label_window2 = GUICtrlCreateLabel ("Zeit Taste 2", 80, 40)
    $label_window3 = GUICtrlCreateLabel ("Zeit Taste 3", 80, 60)
    $label_window4 = GUICtrlCreateLabel ("Zeit Taste 4", 80, 80)
    $label_window5 = GUICtrlCreateLabel ("Zeit Taste 5", 80, 100)
    $label_window6 = GUICtrlCreateLabel ("Zeit Taste 6", 80, 120)
    $label_window7 = GUICtrlCreateLabel ("Zeit Taste 7", 80, 140)
    $label_window8 = GUICtrlCreateLabel ("Zeit Taste 8", 80, 160)
    $label_window9 = GUICtrlCreateLabel ("Zeit Taste 9", 80, 180)
    $label_window0 = GUICtrlCreateLabel ("Zeit Taste 0", 80, 200) ;Beschriftung_Taste_0

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

    $input_window_delay1 = GUICtrlCreateInput ("1000", 150, 20); Taste_1
    $input_window_delay2 = GUICtrlCreateInput ("1000", 150, 40); Taste_2
    $input_window_delay3 = GUICtrlCreateInput ("1000", 150, 60); Taste_3
    $input_window_delay4 = GUICtrlCreateInput ("1000", 150, 80); Taste_4
    $input_window_delay5 = GUICtrlCreateInput ("1000", 150, 100); Taste_5
    $input_window_delay6 = GUICtrlCreateInput ("1000", 150, 120); Taste_6
    $input_window_delay7 = GUICtrlCreateInput ("1000", 150, 140); Taste_7
    $input_window_delay8 = GUICtrlCreateInput ("1000", 150, 160); Taste_8
    $input_window_delay9 = GUICtrlCreateInput ("1000", 150, 180); Taste_9
    $input_window_delay0 = GUICtrlCreateInput ("1000", 150, 200); Taste_0

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

    GUISetOnEvent ($gui_event_close, "Terminate") ; Funktion_Exit_Gui
    GUISetState (@SW_SHOW)
    HotKeySet ("f", "PushKey") ; Funktion_Aktions_Taste
    HotKeySet ("+!e", "Terminate") ; Funktion_Exit_Taste

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

    While 1
    Sleep (100)
    WEnd

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

    Func PushKey ()
    Send ("1") ; Funktion_Taste 1
    Sleep ($input_window_delay1) ; Funktion_Delay
    Send ("2") ; Funktion_Taste 2
    Sleep ($input_window_delay2) ; Funktion_Delay
    Send ("3") ; Funktion_Taste 3
    Sleep ($input_window_delay3) ; Funktion_Delay
    Send ("4") ; Funktion_Taste 4
    Sleep ($input_window_delay4) ; Funktion_Delay
    Send ("5") ; Funktion_Taste 5
    Sleep ($input_window_delay5) ; Funktion_Delay
    Send ("6") ; Funktion_Taste 6
    Sleep ($input_window_delay6) ; Funktion_Delay
    Send ("7") ; Funktion_Taste 7
    Sleep ($input_window_delay7) ; Funktion_Delay
    Send ("8") ; Funktion_Taste 8
    Sleep ($input_window_delay8) ; Funktion_Delay
    Send ("9") ; Funktion_Taste 9
    Sleep ($input_window_delay0) ; Funktion_Delay
    Send ("0") ; Funktion_Taste 10
    EndFunc

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

    Func Terminate ()
    Exit 0
    EndFunc

    [/autoit]


    Also das Aussehen der Gui stimmt schonmal so ungefähr, aber ich habe noch
    Probleme mit den "Verknüpfungen" der Eingabefelder mit dem eigentlichen Script.
    Zu dem bräuchte ich noch einen Tip wie man erreicht, dass die Priorität der Checkbox
    noch vor dem Input liegt.

    Schätze das die richtigen Lösungsansätze in GUICtrlRead, GUICtrlGetState, GUICtrlSetState,
    zu suchen sind (stehe da auf dem Schlauch welches die richtige Funktion für das Anliegen ist.)

  • Entschuldigung für den Doppelpost, aber ich komme hier einfach nicht weiter, weil meine Eingaben immer wirkungslos bleiben (Ziel der Gui ist ja das andere damit das compilierte Script bearbeiten können ;( )
    Also wie sollte ich weiter vorgehen?

    Hier das letzte Update vom Script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    $main_window = GUICreate ("R-K-E", 230, 480) ; Funktion_Fenster_Layout
    $label_window_hotkey = GUICtrlCreateLabel ("Auslöstaste", 5, 450)
    $input_window_hotkey = GUICtrlCreateInput ("e", 80, 450) ; Hotkey

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

    $checkbox_window1 = GUICtrlCreateCheckbox ("An/Aus", 5, 20)
    $checkbox_window2 = GUICtrlCreateCheckbox ("An/Aus", 5, 60)
    $checkbox_window3 = GUICtrlCreateCheckbox ("An/Aus", 5, 100)
    $checkbox_window4 = GUICtrlCreateCheckbox ("An/Aus", 5, 140)
    $checkbox_window5 = GUICtrlCreateCheckbox ("An/Aus", 5, 180)
    $checkbox_window6 = GUICtrlCreateCheckbox ("An/Aus", 5, 220)
    $checkbox_window7 = GUICtrlCreateCheckbox ("An/Aus", 5, 260)
    $checkbox_window8 = GUICtrlCreateCheckbox ("An/Aus", 5, 300)
    $checkbox_window9 = GUICtrlCreateCheckbox ("An/Aus", 5, 340)
    $checkbox_window0 = GUICtrlCreateCheckbox ("An/Aus", 5, 380)

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

    $label_window1 = GUICtrlCreateLabel ("Zeit Taste 1", 80, 20) ; Beschriftung_Taste_1
    $label_window2 = GUICtrlCreateLabel ("Zeit Taste 2", 80, 60)
    $label_window3 = GUICtrlCreateLabel ("Zeit Taste 3", 80, 100)
    $label_window4 = GUICtrlCreateLabel ("Zeit Taste 4", 80, 140)
    $label_window5 = GUICtrlCreateLabel ("Zeit Taste 5", 80, 180)
    $label_window6 = GUICtrlCreateLabel ("Zeit Taste 6", 80, 220)
    $label_window7 = GUICtrlCreateLabel ("Zeit Taste 7", 80, 260)
    $label_window8 = GUICtrlCreateLabel ("Zeit Taste 8", 80, 300)
    $label_window9 = GUICtrlCreateLabel ("Zeit Taste 9", 80, 340)
    $label_window0 = GUICtrlCreateLabel ("Zeit Taste 0", 80, 380) ;Beschriftung_Taste_0

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

    $input_window_delay1 = GUICtrlCreateInput ("1000", 150, 40); Taste_1
    $input_window_delay2 = GUICtrlCreateInput ("1000", 150, 80); Taste_2
    $input_window_delay3 = GUICtrlCreateInput ("1000", 150, 120); Taste_3
    $input_window_delay4 = GUICtrlCreateInput ("1000", 150, 160); Taste_4
    $input_window_delay5 = GUICtrlCreateInput ("1000", 150, 200); Taste_5
    $input_window_delay6 = GUICtrlCreateInput ("1000", 150, 240); Taste_6
    $input_window_delay7 = GUICtrlCreateInput ("1000", 150, 280); Taste_7
    $input_window_delay8 = GUICtrlCreateInput ("1000", 150, 320); Taste_8
    $input_window_delay9 = GUICtrlCreateInput ("1000", 150, 360); Taste_9

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

    GUISetOnEvent ($gui_event_close, "Terminate") ; Funktion_Exit_Gui

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

    GUICtrlSetState ($checkbox_window1,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window2,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window3,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window4,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window5,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window6,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window7,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window8,"$GUI_CHECKED")
    GUICtrlSetState ($checkbox_window9,"$GUI_CHECKED")

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

    GUICtrlRead ($input_window_delay1)
    GUICtrlRead ($input_window_delay2)
    GUICtrlRead ($input_window_delay3)
    GUICtrlRead ($input_window_delay4)
    GUICtrlRead ($input_window_delay5)
    GUICtrlRead ($input_window_delay6)
    GUICtrlRead ($input_window_delay7)
    GUICtrlRead ($input_window_delay8)
    GUICtrlRead ($input_window_delay9)

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

    GUISetState (@SW_SHOW)
    HotKeySet ("f", "PushKey") ; Funktion_Aktions_Taste
    HotKeySet ("+!e", "Terminate") ; Funktion_Exit_Taste

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

    While 1
    Sleep (100)
    WEnd

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

    Func PushKey ()
    Send ("1") ; Funktion_Taste 1
    $checkbox_window1 = Sleep ($input_window_delay1) ; Funktion_Delay_1
    Send ("2") ; Funktion_Taste 2
    $checkbox_window2 = Sleep ($input_window_delay2) ; Funktion_Delay_2
    Send ("3") ; Funktion_Taste 3
    $checkbox_window3 = Sleep ($input_window_delay3) ; Funktion_Delay_3
    Send ("4") ; Funktion_Taste 4
    $checkbox_window4 = Sleep ($input_window_delay4) ; Funktion_Delay_4
    Send ("5") ; Funktion_Taste 5
    $checkbox_window5 = Sleep ($input_window_delay5) ; Funktion_Delay_5
    Send ("6") ; Funktion_Taste 6
    $checkbox_window6 = Sleep ($input_window_delay6) ; Funktion_Delay_6
    Send ("7") ; Funktion_Taste 7
    $checkbox_window7 = Sleep ($input_window_delay7) ; Funktion_Delay_7
    Send ("8") ; Funktion_Taste 8
    $checkbox_window8 = Sleep ($input_window_delay8) ; Funktion_Delay_8
    Send ("9") ; Funktion_Taste 9
    $checkbox_window9 = Sleep ($input_window_delay9) ; Funktion_Delay_9
    Send ("0") ; Funktion_Taste 10
    EndFunc

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

    Func Terminate ()
    Exit 0
    EndFunc

    [/autoit]
  • Hallo obs,

    gern geschehen


    Also das Aussehen der Gui stimmt schonmal so ungefähr, aber ich habe noch
    Probleme mit den "Verknüpfungen" der Eingabefelder mit dem eigentlichen Script.
    Zu dem bräuchte ich noch einen Tip wie man erreicht, dass die Priorität der Checkbox
    noch vor dem Input liegt.


    Schau dir dazu bitte die in der Hilfe unter If, oder select, oder switch nach. Such dir raus mit was du am besten zurecht kommst, damit kannst du in deiner Func Pushkey die Checkboxen mit den Eingabefeldern verknüpfen, also nur dann ausführen, wenn die Checkbox 'gechecked' ist. Ich hoffe das du das gemeint hast. Denn Sinn dahinter versteh ich zwar nicht, eine Reihe von Tasten hintereinander auszuführen, vielleich kannst du mir das ja bei Gelegenheit erklären.

    mfg (Auto)Bert

    • Offizieller Beitrag

    Fangen wir mal mit den Zeilen 42...50 an. Die müssen so lauten:

    [autoit]

    GUICtrlSetState ($checkbox_window1, $GUI_CHECKED) ; ohne Anführungsstriche

    [/autoit]

    Die Zeilen 52...60 komplett löschen.

    Die Funktion "PushKey" folgendermassen ändern:

    [autoit]


    Func PushKey()
    If BitAND(GUICtrlRead($checkbox_window1), $GUI_CHECKED) Then
    Send("1") ; Funktion_Taste 1
    Sleep(GUICtrlRead($input_window_delay1)) ; Funktion_Delay_1
    EndIf
    If BitAND(GUICtrlRead($checkbox_window2), $GUI_CHECKED) Then
    Send("2") ; Funktion_Taste 2
    Sleep(GUICtrlRead($input_window_delay2)) ; Funktion_Delay_2
    EndIf
    ; [...]
    EndFunc

    [/autoit]

    Achja, und ganz am Anfang:

    [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit]
  • Also ich finde es ganz große Klasse, dass man auch als Anfänger mit AutoIT in relativ kurzer Zeit schon eine GUI schreiben kann :). Überhaupt lässt sich diese Scriptsprache leicht erlernen und für alltägliche Probleme Praxis orientiert anwenden.

    Ein nettes Danke schön für eure Ratschläge und die praktische Hilfe(auf die mathematische Funktion und die Syntax wäre ich nie gekommen) zur Entwicklung meines Scriptes!

    So nun fehlen nur noch ein paar Kleinigkeiten bis zur Vervollständigung und dann wird es als nützliches, sowie erlaubtes Tool für ein Spiel dienen (Tasten 1 bis 0 sind mit Funktionen belegt).

    Danke :)