Der Wert LastFoundWindow ist die ID (ahk_id) des Fensters, das durch die zeitlich letzte Anweisung IfWin[Not]Exist, IfWin[Not]Active, WinWait[Not]Active oder WinWait gefunden wurde. Das Erstellen und die Pflege von Skripten wird damit vereinfacht, weil die Parameter WinTitle und WinText für das Zielfenster nicht in jeder Fensteranweisung wiederholt werden müssen. Außerdem werden die Skripte schneller ausgeführt, weil nicht jedesmal erneut nach dem bereits gefundenen Zielfenster gesucht wird.
LastFoundWindow kann nicht wie eine Variable über einen Namen abgefragt werden, steht aber in allen Fensteranweisungen mit Ausnahme von WinWait, WinActivateBottom und GroupAdd als Voreinstellung zur Verfügung. Dafür werden einfach alle vier Fensterparameter (WinTitle, WinText, ExcludeTitle und ExcludeText) leer gelassen.
Jeder Thread verwaltet einen eigenen Wert für LastFoundWindow, d.h., wenn der aktuelle Thread durch einen anderen unterbrochen wird, ist der Wert nach Rückkehr aus dem unterbrechenden Thread unverändert, auch wenn dort auf ein anderes Fenster zugegriffen wurde.
Wenn LastFoundWindow ein verborgenes Gui Fenster ist, kann man darauf auch dann zugreifen, wenn DetectHiddenWindows "Off" ist. Das wird oft in Verbindung mit "Gui +LastFound" genutzt.
Beispiele
Run Notepad
WinWait Untitled - Notepad
WinActivate ; Verwendet den Wert von "LastFoundWindow".
IfWinExist, Untitled - Notepad
{
WinActivate ; Verwendet automatisch das zuvor gefundene Fenster.
WinMaximize ; Ebenso
Send, Some text.{Enter}
return
}
IfWinNotExist, Calculator
return
else
{
WinActivate ; Das vorherige "IfWinNotExist" setzt ebenfalls den Wert von "LastFoundWindow" .
WinMove, 40, 40 ; Verschiebt es an eine neue Position.
return
}
Wenn mehrere Fenster die WinTitle/WinText Kriterien einer Fensteranweisung wie WinMove erfüllen, wird immer das oberste Fenster bearbeitet. Wenn z.B. das aktive/oberste Fenster die Kriterien erfüllt, wird es als Zielfenster verwendet, auch wenn andere darunterliegende Fenster ebenfalls die Kriterien erfüllen.
Aktives Fenster (A): Fast alle Fensteranweisungen können auf das momentan aktive Fenster bezogen werden, indem man als WinTitle Parameter den Buchstaben A angibt und die übrigen Parameter WinText, ExcludeTitle und ExcludeText leer lässt. Im folgenden Beispiel wird die Tastenkombination Win+UpArrow zum Hotkey, der das aktive Fenster maximiert: #Up::WinMaximize A
Fensterklasse (ahk_class): Alle Fensteranweisungen können auch mit einer Fensterklasse arbeiten, wie sie z.B. im Window Spy angezeigt oder von WinGetClass geliefert wird. Im folgenden Beispiel wird ein Explorerfenster in der Ordneransicht aktiviert: WinActivate ahk_class ExploreWClass
Eindeutige ID/HWND (ahk_id): Alle Fensteranweisungen können auch durch Angabe der zugehörigen eindeutigen ID auf ein spezielles Fenster oder Control bezogen werden. Beispiel: WinActivate ahk_id %VarContainingID%. Die ID eines Fensters wird normalerweise mit WinExist() oder WinGet ermittelt, die eines Controls mit ControlGet Hwnd, MouseGetPos oder DllCall. Bei Angabe der ahk_id werden immer auch verborgene Controls bearbeitet, d.h., die Einstellung für DetectHiddenWindows ist ohne Belang.
Prozess ID (ahk_pid): Alle Fensteranweisungen können auch auf Fenster bezogen werden, dessen Prozess ID (PID) bekannt ist. WinClose ahk_pid %VarContainingPID% schließt z.B. das oberste Fenster des zugehörigen Prozesses. Die PID kann über die Anweisungen WinGet, Run oder Process ermittelt werden.
Fenstergruppe (ahk_group): Alle Fensteranweisungen können durch Angabe von ahk_group MyGroupName in WinTitle auf mehrere Fenster bezogen werden, die zu einer Fenstergruppe gehören. Die Anweisungen WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose und WinKill bearbeiten dabei alle Fenster der Gruppe. Im Gegensatz dazu bearbeiten die anderen Fensteranweisungen wie WinActivate und IfWinExist nur das oberste Fenster einer Gruppe.
Mehrfache Kriterien: Im Gegensatz zu ahk_group im vorangehenden Absatz, das die Suche erweitert, kann die Suche durch Angabe mehrerer Kriterien im WinTitle Parameter auch eingeschränkt werden. Im folgenden Beispiel wartet das Skript auf ein Fenster, dessen Titel My File.txt enthält und dessen Klasse Notepad ist:
WinWait My File.txt ahk_class Notepad
WinActivate ; Aktiviere das gefundene Fenster.
Bei dieser Methode muss - wenn benötigt - zuerst der Text des Titels angegeben werden, danach die weiteren Kriterien. Die Kriterien müssen durch genau ein Leerzeichen / einen Tabulator getrennt werden. Weitere Leerzeichen oder Tabulatoren werden als Bestandteil des davor stehenden Kriteriums behandelt.