Wie Sie wissen, Subroutinen kann nicht mit einer Variable deklariert werden, wie Sie wollen. Sie scheinen zu versuchen, Threads zu verwenden, aber offizielle AutoHotkey fehlt ihnen, aber es gibt 3 Optionen: AutoHotkey.dll bietet Thread-ähnliche Funktionen (google it), können Sie ändern und speichern Sie ein neues Skript und führen Sie es getrennt jedes Mal, wenn Sie möchten Erstellen Sie einen neuen Fensterrahmen, oder verwenden Sie einfach eine festgelegte Zeit mit einem Timer (wenn es nicht nötig ist, die GUI in einer präzisen Angelegenheit zu zerstören) und zerstören Sie die Fenster in der Reihenfolge vom ersten bis zum letzten.
zeigt unter der 3. Option, nicht eine perfekte Umsetzung:
guiNumArr := []
F1::
WinGetActiveStats, Title, Width, Height, X, Y
guiCurrent := drawFrameAroundWin(Width, Height)
guiNumArr.push(guiCurrent)
Gui, %guiCurrent%:Show, NoActivate ; The Gui will not steal keyboard focus
SetTimer, guiDestroy, 2000
Return
guiDestroy:
if (guiNumArr.length()) {
x := guiNumArr.RemoveAt(1)
gui, %x%:destroy
return
}
else
SetTimer, guiDestroy, Off
return
drawFrameAroundWin(TW:=320, TH:=240, BorderThickness:=3, BorderColor:="0000FF") {
static guiNumber := 0
guiNumber++
colors := ["Red", "Yellow", "Blue", "Green"]
random, x, 1, 4
BorderColor := colors[x]
Gui, %guiNumber%:Margin, %BorderThickness%, %BorderThickness%
Gui, %guiNumber%:Color, %BorderColor%
Gui, %guiNumber%:Add, Text, w%TW% h%TH% 0x6 ; Draw a white static control
Gui, %guiNumber%:+LastFound
WinSet, TransColor, FFFFFF
Gui, %guiNumber%: -Caption +AlwaysOnTop +ToolWindow
Return guiNumber
}
Ty sehr für Ihre Zeit – user3159140