Mit der ESC-Taste eine Loop-Schleife verlassen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

frankfragt
Posts: 14
Joined: 02 Mar 2016, 04:57

Mit der ESC-Taste eine Loop-Schleife verlassen

02 Mar 2016, 06:03

Hi,

bin noch nicht so ganz vertraut mit ahk. Meine Frage ist sicher einfach zu lösen. Was muss ich als Prüf-Bedingung am Ende einer Schleife eingeben, damit durch Drücken der Taste {Esc} eine Schleife verlassen wird? Da in der Schleife einige Pausen sind, ist es ja unklar, zu welchem Zeipunkt {Esc} gedrückt wird. Am Besten wäre es, wenn die Schleife sofort verlassen würde, andernfalls das Drücken von {Esc} wenigstens gemerkt wird bis zum Ende der Schleife.

Ich hoffe, ich konnte das einigermaßen verständlich formulieren.

Danke für Tipps.
just me
Posts: 9450
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Mit der ESC-Taste eine Loop-Schleife verlassen

03 Mar 2016, 02:38

Moin und willkommen!

Für den Abbruch einer Schleife würde ich einen Hotkey nutzen und in der Hotkeyroutine eine Variable auf einen bestimmten Wert setzen, der dann in der Schleife als Abbruchbedingung geprüft wird. Die Prüfung der Abbruchbedingung kann dann am Anfang, am Ende oder auch vor jeder Anweisung der Schleife erfolgen, je nach dem, wie schnell die Schleife abgebrochen werden soll.

Eine Altenative wäre die GetKeyState Anweisung bzw. Funktion. Die greift aber nur dann, wenn der Anwender die Taste zum Zeitpunkt der Prüfung (immer noch) gedrückt hält.
garry
Posts: 3763
Joined: 22 Dec 2013, 12:50

Re: Mit der ESC-Taste eine Loop-Schleife verlassen

03 Mar 2016, 03:25

danke 'just me'
Test-script

Code: Select all

;-------------------------------------
;- F8=START     ESCape=BREAK    loop
;-------------------------------------
F8::
Loop
    {
    tooltip, Loop is running
    If GetKeyState("ESC","P")
        {
        tooltip
        Break
        }
   }
Return
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Mit der ESC-Taste eine Loop-Schleife verlassen

07 Apr 2016, 03:03

Huhu,

ich mache es noch etwas 'eleganter' und frage ab, ob der User die Schleife verlassen will.

Code: Select all

F8::
    ende := FALSE
    Loop
    {
        tooltip, Loop is running
        If GetKeyState("ESC","P")
        {
            MsgBox, 36, Ende?, Schleife beenden?
            ifMsgBox, Yes
                ende := TRUE
        }

        if ende = TRUE
        {
            tooltip
            Break
        }

        ; Hier dann das einfügen, was in der Schliefe passieren soll, BIS ESC gedrückt wird.

    }
Return
PS: Nicht getestet, aber aus einem an sich funktionierenden Script herauskopiert.
User avatar
LuckyJoe
Posts: 341
Joined: 02 Oct 2013, 09:52

Re: Mit der ESC-Taste eine Loop-Schleife verlassen

29 Jun 2017, 04:40

Hallo Gucky_87,

... danke für den Tipp, aber bei mir läuft das nicht mit If ende = TRUE, sondern nur mit If ende:

Code: Select all

F8::
	z = 0
	ende := FALSE
	Loop
	{
		z += 1
		tooltip, Loop is running %z%
		Sleep 10
	If GetKeyState("ESC","P")
	{
		MsgBox, 36, Ende?, Schleife beenden?
		ifMsgBox, Yes
			ende := TRUE
	}

	; if ende = TRUE	; <<== funktioniert bei mir nicht
	If ende
	{
		tooltip
		Break
	}

	; Hier dann das einfügen, was in der Schliefe passieren soll, BIS ESC gedrückt wird.

	}
	Until z = 200
	tooltip
Return
Viele Grüße
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 32 guests