WinActivate

Aktiviert ein bestimmtes Fenster.

WinActivate , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet. Andernfalls geben Sie für FensterTitel einen Fenstertitel oder andere Kriterien zur Identifizierung des Zielfensters und/oder für FensterText eine Teilzeichenkette aus einem Textelement des Zielfensters an (Textelemente können mit dem internen Tool "Window Spy" in Erfahrung gebracht werden).

AusnahmeTitel und AusnahmeText können verwendet werden, um ein oder mehrere Fenster anhand ihres Titels oder Textes auszuschließen. Ihre Angabe ähnelt der von FensterTitel und FensterText, außer dass AusnahmeTitel keine anderen Kriterien als den Fenstertitel erkennt.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Standardmäßig werden versteckte Fenster nicht erkannt und versteckte Textelemente erkannt, was mit DetectHiddenWindows und DetectHiddenText geändert werden kann. Standardmäßig muss ein Fenstertitel mit dem angegebenen FensterTitel oder AusnahmeTitel beginnen, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Bemerkungen

Wenn ein inaktives Fenster aktiv wird, wird es vom Betriebssystem in den Vordergrund (an den Anfang des Stapels) gesetzt. Dies geschieht nicht, wenn das Fenster bereits aktiv ist.

Wenn das Fenster minimiert und inaktiv ist, wird es vor der Aktivierung automatisch wiederhergestellt. [v1.1.20+]: Wenn FensterTitel der Buchstabe "A" ist und die anderen Parameter weggelassen werden, wird das aktive Fenster wiederhergestellt. [v1.1.28.02+]: Das Fenster wird auch wiederhergestellt, wenn es bereits aktiv war.

Es werden sechs Versuche innerhalb von 60 ms unternommen, um das Zielfenster zu aktivieren. Wenn alle sechs Versuche fehlschlagen, sendet WinActivate automatisch {Alt 2}, um mögliche Einschränkungen durch das System zu umgehen, und unternimmt dann einen siebten Versuch. Daher ist es üblicherweise nicht notwendig, WinWaitActive, WinActive() oder IfWinNotActive nach WinActivate auszuführen.

Bei mehreren übereinstimmenden Fenstern wird in der Regel das oberste (meist zuletzt verwendete) Fenster aktiviert. Wenn das Fenster bereits aktiv ist, bleibt es aktiv, anstatt ein anderes übereinstimmendes Fenster darunter zu aktivieren. Wenn jedoch das aktive Fenster mit WinSet Bottom an das Ende des Stapels verschoben wird, kann es vorkommen, dass ein anderes Fenster aktiviert wird, selbst dann, wenn das aktive Fenster eine Übereinstimmung ist.

WinActivateBottom aktiviert das unterste übereinstimmende Fenster (typischerweise das am wenigsten verwendete).

GroupActivate aktiviert das nächste Fenster, das den Kriterien einer Fenstergruppe entspricht.

[v1.1.20+]: Wenn das aktive Fenster versteckt ist und DetectHiddenWindows ausgeschaltet ist, gilt das Fenster als nicht gefunden. Stattdessen wird ein sichtbares übereinstimmendes Fenster aktiviert, sofern vorhanden.

Wenn ein Fenster unmittelbar nach der Aktivierung eines anderen Fensters aktiviert wird, kann es je nach Betriebssystem und Einstellungen vorkommen, dass die Taskleistenschaltflächen anfangen zu blinken. Dies kann mit #WinActivateForce verhindert werden.

Bekanntes Problem: Wenn das Skript auf einem Computer oder Server läuft, auf den via Remotedesktop zugegriffen wird, kann WinActivate einen Hänger verursachen, wenn der Remotedesktop-Client minimiert ist. Eine Übergangslösung ist die Verwendung von Befehlen, die keine Fensteraktivierung benötigen, wie z.B. ControlSend und ControlClick. Eine andere Übergangslösung ist die Verwendung der folgenden Registry-Einstellung auf dem lokalen Computer des Clients:

; Ändern Sie HKCU in HKLM, um alle Benutzer auf diesem System einzubeziehen.
RegWrite REG_DWORD, HKCU, Software\Microsoft\Terminal Server Client
    , RemoteDesktop_SuppressWhenMinimized, 2

WinActivateBottom, #WinActivateForce, SetTitleMatchMode, DetectHiddenWindows, Zuletzt Gefundenes Fenster, WinExist(), WinActive(), WinWaitActive, WinWait, WinWaitClose, WinClose, GroupActivate, WinSet

Beispiele

Wenn Notepad existiert, aktiviere es, andernfalls aktiviere den Taschenrechner.

if WinExist("Unbenannt - Editor")
    WinActivate ; Verwendet das von WinExist gefundene Fenster.
else
    WinActivate, Rechner