Bei mehrere Guis funktioniert GuiEscape nicht, Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Nussbeisser
Posts: 108
Joined: 17 Jul 2019, 08:49

Bei mehrere Guis funktioniert GuiEscape nicht,

Post by Nussbeisser » 31 Jan 2023, 18:33

Guten Abend,
mein Script sieht wie folgt aus:

Code: Select all

#NoEnv
#Singleinstance Force

GuiNr := 1
F12::
CraeateGui(GuiNr)
GuiNr++
Return

CraeateGui(GuiName){
Gui, %GuiName%:+AlwaysOnTop -ToolWindow
Gui, %GuiName%:Font, S12 cBlack, Arial
Gui, %GuiName%:Color, White
Gui, %GuiName%:margin, 0, 0
Gui, %GuiName%:Add, Text,w500, % GuiName
Gui, %GuiName%:Show,Center NoActivate, %GuiName% 
Return


%GuiName%GuiEscape:
GuiEscape:
Gui, Destroy
Return
}
Dieses Skript erstellt mehrere GUI-Fenster beim F12 drucken, aber GuiEscape funktioniert nur bei dem ersten GUI-Fenster, das erstellt wurde. Bei den anderen GUI-Fenstern hat %GuiName%GuiEscape: keine Wirkung.



Woran könnte das liegen?
Vielen Dank

UnReALiTyy
Posts: 223
Joined: 06 Jun 2017, 11:38

Re: Bei mehrere Guis funktioniert GuiEscape nicht,

Post by UnReALiTyy » 31 Jan 2023, 23:11

Nussbeisser wrote:
31 Jan 2023, 18:33
Guten Abend,
mein Script sieht wie folgt aus:

Code: Select all

#NoEnv
#Singleinstance Force

GuiNr := 1
F12::
CraeateGui(GuiNr)
GuiNr++
Return

CraeateGui(GuiName){
Gui, %GuiName%:+AlwaysOnTop -ToolWindow
Gui, %GuiName%:Font, S12 cBlack, Arial
Gui, %GuiName%:Color, White
Gui, %GuiName%:margin, 0, 0
Gui, %GuiName%:Add, Text,w500, % GuiName
Gui, %GuiName%:Show,Center NoActivate, %GuiName% 
Return


%GuiName%GuiEscape:
GuiEscape:
Gui, Destroy
Return
}
Dieses Skript erstellt mehrere GUI-Fenster beim F12 drucken, aber GuiEscape funktioniert nur bei dem ersten GUI-Fenster, das erstellt wurde. Bei den anderen GUI-Fenstern hat %GuiName%GuiEscape: keine Wirkung.



Woran könnte das liegen?
Vielen Dank
Hey, erst einmal ist die Variable %GuiName% von dir immer eine Zahl höher wie das eben erstellte GUI, weil beim drücken von F12 ja sofort "+1" gerechnet wird. Also ist es niemals möglich das eben erstellte GUI so zu beenden. Weil es exestieren im Code ja trotzdem immer nur diese 2 Zeilen von GuiEscape:, unabhängig davon wie viele du erstellt hast.

Zweitens ist es überhaupt nicht möglich bei GuiEscape: eine Variable zu verwenden. Daher gibt es nur die Möglichkeit für jede GUI eine eigene Zeile für GuiEscape: zu schreiben. Zumindest fällt mir spontan keine andere Möglichkeit ein.


Die einfachste Lösung dir mir um die Uhrzeit einfällt, wäre es einfach den Hotkey ESC zu nutzen um das Aktive Gui zu ermitteln und dieses zu Schließen. Bei mir getestet und funktioniert.

Code: Select all

#NoEnv
#Singleinstance Force

GuiNr := 0
F12::
CraeateGui(GuiNr += 1)
Return

CraeateGui(GuiName){
Gui, %GuiName%:+AlwaysOnTop -ToolWindow
Gui, %GuiName%:Font, S12 cBlack, Arial
Gui, %GuiName%:Color, White
Gui, %GuiName%:margin, 0, 0
Gui, %GuiName%:Add, Text,w500, % GuiName
Gui, %GuiName%:Show,Center NoActivate, %GuiName% 
Return
}

#IfWinActive ahk_class AutoHotkeyGUI
ESC::
WinGetTitle, Titel, A
Gui, %Titel%:Destroy
return

just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Bei mehrere Guis funktioniert GuiEscape nicht,  Topic is solved

Post by just me » 01 Feb 2023, 11:24

Moin,

mit der Option Label kannst Du für alle Fenster ein gemeinsames Label vereinbaren. Wenn Du innerhalb des Labels die Fenster unterscheiden musst, geht das über die Variable A_Gui.

Code: Select all

#NoEnv
#Singleinstance Force
GuiNr := 1

F12::
   CreateGui(GuiNr)
   GuiNr++
Return

CreateGui(GuiName) {
   Gui, %GuiName%:+AlwaysOnTop -ToolWindow +LabelGui   ; <<<<<<<<<<<<<<<
   Gui, %GuiName%:Font, S12 cBlack, Arial
   Gui, %GuiName%:Color, White
   Gui, %GuiName%:margin, 0, 0
   Gui, %GuiName%:Add, Text,w500, % GuiName
   Gui, %GuiName%:Show,Center NoActivate, %GuiName%
   Return

   GuiEscape:
   Gui, Destroy
   Return
}

Nussbeisser
Posts: 108
Joined: 17 Jul 2019, 08:49

Re: Bei mehrere Guis funktioniert GuiEscape nicht,

Post by Nussbeisser » 01 Feb 2023, 15:17

Ich danke euch herzlich für eure hilfreichen Vorschläge!

Post Reply

Return to “Ich brauche Hilfe”