WinMove

Ändert die Position und/oder Größe eines bestimmten Fensters.

WinMove X, Y, Breite, Höhe, FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

X, Y

Typ: Integer

Wenn einer der Parameter weggelassen wird, bleibt die Position in dieser Dimension unverändert. Andernfalls geben Sie die X- und Y-Koordinate (in Pixel) der oberen linken Ecke der neuen Position des Zielfensters an. Das obere linke Pixel des Bildschirms befindet sich auf 0, 0.

Breite, Höhe

Typ: Integer

Wenn einer der Parameter weggelassen wird, bleibt die Größe in dieser Dimension unverändert. Andernfalls geben Sie die neue Breite und Höhe des Fensters (in Pixel) an.

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Typ: Zeichenkette, Integer oder Objekt

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 kann ein Fenstertitel den angegebenen FensterTitel oder AusnahmeTitel an beliebiger Stelle enthalten, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Fenster nicht gefunden werden konnte.

Es wird ein OSError ausgelöst, wenn ein codeinterner Funktionsaufruf einen Fehler meldet. Es kann jedoch auch Erfolg gemeldet werden, wenn sich das Fenster nicht bewegt hat, z.B. wenn das Fenster seine eigene Bewegung einschränkt.

Bemerkungen

Wenn Breite oder Höhe gering (oder negativ) ist, werden die meisten Fenster mit einer Titelleiste in der Regel nicht kleiner als 112 x 27 Pixel gemacht (einige Fenstertypen können jedoch eine andere Mindestgröße haben). Wenn Breite oder Höhe hoch ist, werden die meisten Fenster nicht größer als etwa 12 Pixel über die Dimensionen des Desktops gemacht.

Negative X- und Y-Koordinaten sind erlaubt, um Multi-Bildschirm-Systeme zu unterstützen und um Fenster über den Bildschirmrand hinaus zu verschieben.

Obwohl WinMove minimierte Fenster nicht verschieben kann, kann es versteckte Fenster verschieben, wenn DetectHiddenWindows eingeschaltet ist.

Die Geschwindigkeit von WinMove wird durch SetWinDelay beeinflusst.

Auf Systemen mit mehreren Bildschirmen, die unterschiedliche DPI-Einstellungen haben, kann die endgültige Position und Größe des Fensters aufgrund der OS-DPI-Skalierung von den gewünschten Werten abweichen.

ControlMove, WinGetPos, WinHide, WinMinimize, WinMaximize, Win-Funktionen

Beispiele

Öffnet den Taschenrechner, wartet bis er existiert und verschiebt ihn in die obere linke Ecke des Bildschirms.

Run "calc.exe"
WinWait "Rechner"
WinMove 0, 0 ; Verwendet das von WinWait gefundene Fenster.

Erstellt ein Popup-Fenster mit fester Größe, das den Inhalt der Zwischenablage anzeigt, und verschiebt es in die obere linke Ecke des Bildschirms.

MeineGui := Gui("ToolWindow -Sysmenu Disabled", "Die Zwischenablage enthält:")
MeineGui.Add("Text",, A_Clipboard)
MeineGui.Show("w400 h300")
WinMove 0, 0,,, MeineGui
MsgBox "Drücken Sie OK, um das Popup-Fenster zu schließen"
MeineGui.Destroy()

Zentriert ein Fenster auf dem Bildschirm.

FensterZentrieren("ahk_class Notepad")

FensterZentrieren(FensterTitel)
{
    WinGetPos ,, &Breite, &Höhe, FensterTitel
    WinMove (A_ScreenWidth/2)-(Breite/2), (A_ScreenHeight/2)-(Höhe/2),,, FensterTitel
}