Func

  • Huhu ich noch mal xD
    Ich hab folgende Funktion:

    [autoit]

    Func _Func1 ()
    HotkeySet("F10", "start")
    HotkeySet("ESC", "stop")

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

    Func start()
    $2 = GuiCtrlRead($1)
    MsgBox(0,"Test",$2)

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

    EndFunc
    EndFunc

    [/autoit]

    $1 ist eine Gui Inputbox und ich wollte mich damit mal vertraut machen. Ich schätze er hat Probleme mit dem doppel Func. Aber es soll erst wenn auf einen Button geklickt wurde also Func _Func dann die nächste Funktion verfügbar sein wozu man halt F10 drücken muss um sie zu starten.
    Aber wo liegt nun mein Fehler?

    Grüße

  • indem du die funktionen einfach richtig erstellst

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

    func _func1()
    HotKeySet("{F10}","start")
    HotKeySet("{ESC}","stop")
    EndFunc
    func start()
    $2 = GuiCtrlRead($1)
    MsgBox(0,"Test",$2)
    EndFunc

    [/autoit]


    es is ja egal ob es die funktion vorhin gab oder nicht ... das hauptsächliche ist ja ob man sie auch ( mit F10 ) aufrufen kann
    greez

  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 117, 84, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 16, 16, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _funktion1()
    EndSwitch
    WEnd

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

    Func _funktion1()
    MsgBox(0,"","Hotkey aktiv")
    HotKeySet("{F10}", "_funktion2")
    EndFunc

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

    Func _funktion2()
    MsgBox(0,"","bla")
    EndFunc

    [/autoit]

    In der Richtung müsstest du dein Script aufbauen ;)

    21 is only half the truth.

  • Ok hat funktioniert :)
    Nun noch ein paar Fragen xD
    Also wie mache ich es, das wenn ich auf einen Button klicke das danach sich der Text von z.b. Start in ausgeführt ändert? Geht das mit guictrlsetdate?
    Dann habe ich eine Funktion zum pausieren des programms geschrieben:

    [autoit]

    Global $paused
    Func stop()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    WEnd
    EndFunc

    [/autoit]

    Wenn ich dann nun den Hotkey für Start drücke und angenommen gleich danach für Stop geht das nicht. Es ist immer eine Verzögerung von ca. 2 Sekunden da wo man es nicht pausieren kann. Weis einer eine Lösung?

  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 117, 84, 192, 124)
    $Button1 = GUICtrlCreateButton("Start", 16, 16, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _funktion1()
    EndSwitch
    WEnd

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

    Func _funktion1()
    GUICtrlSetData($Button1,"Ausgeführt")
    HotKeySet("{F10}", "_funktion2") ;
    EndFunc

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

    Func _funktion2()
    MsgBox(0,"","bla")
    EndFunc

    [/autoit]

    Was meinst du mit Hotkey start und stop?^^

    21 is only half the truth.

  • So also das mit dem Schrift auf dem Button nach klick ändern hab ich hingekriegt^^
    Und zwar mein ich das ich ja ein Hotkey hab um das Programm zu starten und einen um es zu pausieren
    Wenn ich nun F10(start) drücke und dann gleich ESC(pause) drücke geht das beim ersten mal
    Beim zweiten mal drück ich F10 und dann wieder gleich ESC und es funktioniert nicht.
    Weis einer ne Lösung?

  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 117, 84, 192, 124)
    $Button1 = GUICtrlCreateButton("Start", 16, 16, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $Paused

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _funktion1()
    EndSwitch
    WEnd

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

    Func _funktion1()
    GUICtrlSetData($Button1,"Ausgeführt")
    HotKeySet("{F10}", "_funktion2")
    EndFunc

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

    Func _funktion2()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script ist pausiert',0,0)
    WEnd
    ToolTip("")
    EndFunc

    [/autoit]

    Stand so in der Hotkey Hilfe ;)

    EDIT: Den Comment hab ich rausgenommen, hatte davor die linke Alt Taste drinne (Habe mich dann aber kurzfristig um entschieden) :whistling:

    21 is only half the truth.

    Einmal editiert, zuletzt von Mahagon (6. Mai 2010 um 18:15)

  • Oki suppi funktioniert auch alles :)
    Nun noch 2 Fragen.
    1. Wie kann ich die Schriftgröße in einem Input ändern? Weil mein Input ist jetzt Groß und die Schrift klein xD
    2.

    [autoit]

    Func pause()
    $Paused = true
    While $Paused
    sleep(100)
    WEnd
    EndFunc

    [/autoit]

    Er hängt sich nun da bei dieser Funktion ein bisschen auf und zwar wenn das Script pausiert ist kann ich nur noch per Hotkey das Programm schließen und nicht mehr per meinen GUI Button beenden. Ist ja auch logisch weil er aus der While Schleife nich raus geht^^
    Kann mir einer sagen wie ich das mach das wenn es Pausiert ist, man es per Button auch beenden kann?

  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 117, 84, 192, 124)
    $Button1 = GUICtrlCreateButton("Start", 16, 16, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $Paused

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _funktion1()
    EndSwitch
    WEnd

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

    Func _funktion1()
    GUICtrlSetData($Button1,"Ausgeführt")
    HotKeySet("{F10}", "_funktion2")
    EndFunc

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

    Func _funktion2()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script ist pausiert',0,0)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    ToolTip("")
    EndFunc

    [/autoit]

    Du musst dann natürlich die Guievents in der Schleife abfragen -> GUIGetMsg <-
    Die Schrift kannst du mit GUICtrlSetFont verändern

    21 is only half the truth.

  • Ok funktioniert auch alles :)
    Wie begrenze ich ein Inputfeld auf z.b. 5 Zeichen?