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