Führt eine Vielzahl von Änderungen an einem bestimmten Fenster durch, wie z. B. "immer im Vordergrund" und Transparenz.
WinSet, Unterbefehl, Wert , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Geben Sie für Unterbefehl Folgendes an:
Ändert ein Fenster, so dass es immer über allen anderen Fenstern liegt.
WinSet, AlwaysOnTop , OnOffToggle, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Geben Sie für OnOffToggle On
an, um die Einstellung einzuschalten, Off
, um sie auszuschalten, oder Toggle
, um sie auf den entgegengesetzten Zustand zu setzen. Wenn OnOffToggle weggelassen wird oder leer ist, wird standardmäßig Toggle
verwendet. Es ist möglich, das Wort Topmost anstelle von AlwaysOnTop zu verwenden.
[v1.1.30+]: Es ist möglich, die dezimalen Werte 1, 0 und -1 anstelle von On, Off bzw. Toggle zu verwenden.
Sendet das Fenster an das untere Ende des Stapels, so dass es unter allen anderen Fenstern liegt.
WinSet, Bottom ,, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Das gleiche kann auch durch Drücken von Alt+Esc erreicht werden.
Sendet das Fenster an das obere Ende des Stapels, ohne es dabei explizit zu aktivieren.
WinSet, Top ,, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Allerdings werden die Standardeinstellungen des Systems es wahrscheinlich in den meisten Fällen trotzdem aktivieren. Darüber hinaus könnte dieser Unterbefehl keine Wirkung haben, wenn das Betriebssystem sich gegen Anwendungen schützt, die versuchen wollen, den Fokus vom Benutzer zu stehlen (das zum Beispiel davon abhängen kann, welches Fenster gerade aktiv ist und was der Benutzer gerade macht). Eine Möglichkeit, dies zu umgehen, ist es, das Fenster kurz AlwaysOnTop zu machen und es dann wieder auszuschalten.
Deaktiviert die Interaktion mit einem Fenster.
WinSet, Disable ,, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Wenn die Interaktion mit einem Fenster deaktiviert ist, kann der Benutzer es weder verschieben noch mit den darin enthaltenen Steuerelementen interagieren. Außerdem werden deaktivierte Fenster in der Alt-Tab-Liste nicht angezeigt.
Aktiviert die Interaktion mit einem Fenster.
WinSet, Enable ,, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Zeichnet ein Fenster neu.
WinSet, Redraw ,, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Dieser Unterbefehl versucht, die Darstellung/Inhalte eines Fensters zu aktualisieren, indem es dem Betriebssystem mitteilt, dass das Fensterrechteck eine Neuzeichnung benötigt. Falls diese Vorgehensweise bei einem bestimmten Fenster nicht funktioniert, können Sie es mit WinMove versuchen. Wenn das auch nicht funktioniert, können Sie WinHide in Kombination mit WinShow ausprobieren.
Ändert den Style eines Fensters.
WinSet, Style, N , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Wenn das erste Zeichen von N ein Plus- oder Minuszeichen ist, werden die in N angegebenen Styles hinzugefügt bzw. entfernt. Wenn das erste Zeichen ein Zirkumflex (^) ist, werden die in N angegebenen Styles auf den entgegengesetzten Zustand geschaltet. Wenn das erste Zeichen eine Ziffer ist, wird der Style des Fensters komplett mit N überschrieben.
ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt. Ein Fehler tritt auf, wenn das Zielfenster nicht gefunden wird oder der Style nicht angewendet werden darf.
Nach dem Durchführen einiger Style-Änderungen an ein sichtbares Fenster ist es wahrscheinlich notwendig, dass das Fenster mithilfe des Redraw-Unterbefehls oben neu gezeichnet werden muss. Die Style-Tabelle listet einige der häufig verwendeten Styles auf. Zum Beispiel:
WinSet, Style, -0xC00000, A ; Entfernt die Titelleiste des aktiven Fensters (WS_CAPTION).
Ändert den erweiterten Style eines Fensters.
WinSet, ExStyle, N , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Schauen Sie sich den Style-Unterbefehl an, um mehr zu erfahren. Zum Beispiel:
WinSet, ExStyle, ^0x80, FensterTitel ; Schaltet das WS_EX_TOOLWINDOW-Attribut um, das das Fenster in der Alt-Tab-Liste hinzufügt/entfernt.
Ändert die Form eines Fensters zu einem Rechteck, Polygon oder einer Ellipse.
WinSet, Region , Optionen, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Wenn der Optionen-Parameter weggelassen wird oder leer ist, wird der originale/normale Anzeigebereich des Fensters wiederhergestellt. Ansonsten können eine oder mehrere der folgenden Optionen angegeben werden, die mit Leerzeichen voneinander getrennt werden müssen:
Wn: Breite des Rechtecks oder der Ellipse. Zum Beispiel: w200
.
Hn: Höhe des Rechtecks oder der Ellipse. Zum Beispiel: h200
.
X-Y: Ein oder mehrere X-Y-Koordinatenpaare. Bei dem Beispiel 200-0
wäre 200 die X-Koordinate und 0 die Y-Koordinate.
E: Macht die Region zu einer Ellipse statt zu einem Rechteck. Diese Option ist nur gültig, wenn W und H vorhanden sind.
R[w-h]: Macht die Region zu einem Rechteck mit abgerundeten Ecken. Bei dem Beispiel R30-30
wäre jede Ecke eine 30x30 Ellipse. Lässt man w-h weg, wird standardmäßig 30-30 verwendet. R ist nur gültig, wenn W und H vorhanden sind.
Rechteck oder Ellipse: Wenn die Optionen W und H vorhanden sind, wird der neue Anzeigebereich ein Rechteck sein, dessen linke obere Ecke das erste (und nur dieses) X-Y-Koordinatenpaar ist. Wenn dazu noch die E-Option vorhanden ist, wird der neue Anzeigebereich eine Ellipse statt ein Rechteck sein. Zum Beispiel: WinSet, Region, 50-0 W200 H250 E, FensterTitel
.
Polygon: Wenn die Optionen W und H fehlen, wird der neue Anzeigebereich ein Polygon (Vieleck) sein, dessen Ecken mehrere X-Y-Koordinatenpaare sind (jedes Koordinatenpaar ist ein Punkt innerhalb des Fensters, relativ zu dessen oberen linken Ecke). Wenn zum Beispiel drei Koordinatenpaare angegeben sind, wird der neue Anzeigebereich in den meisten Fällen ein Dreieck sein. Die Reihenfolge der Koordinaten zueinander ist manchmal wichtig. Zusätzlich kann das Wort Wind in den Optionen angegeben werden, um die Kurvenmethode zur Bestimmung des Polygonbereichs zu verwenden.
ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt. Fehler treten auf, wenn: 1) das Zielfenster nicht vorhanden ist; 2) eine oder mehrere Optionen ungültig sind; 3) mehr als 2000 Koordinatenpaare angegeben sind; oder 4) die angegebene Region ungültig ist oder nicht auf das Zielfenster angewendet werden kann.
Schauen Sie sich Beispiel #7 im unteren Bereich dieser Seite an, wie man diesen Unterbefehl verwendet.
Wenn eine Region für ein Fenster festgelegt wird, das dem Skript gehört, kann das System automatisch die Methode ändern, die es zum Rendern des Fensterrahmens verwendet, und dadurch das Aussehen des Fensters ändern. Der Effekt ähnelt dem unten gezeigten Workaround #2, der das Fenster aber erst beeinflusst, wenn seine Region zurückgesetzt ist.
Bekannte Einschränkung: Eine Region für ein Fenster zu setzen, das nicht zum Skript gehört, kann zu unerwarteten Ergebnissen führen, wenn das Fenster eine Titelleiste hat und die Systemeinstellung "Desktopgestaltung" aktiviert ist. Das liegt daran, dass der sichtbare Rahmen nicht wirklich Teil des Fensters ist, sondern von einem separaten Systemprozess gerendert wird, der als "Desktop Window Manager" (kurz DWM; zu Deutsch Desktopfenster-Manager) bezeichnet wird. Beachten Sie, dass die Desktopgestaltung in Windows 8 und höher immer aktiviert ist. Sie können einen der beiden folgenden Workarounds verwenden:
; #1: Titelleiste des Fensters entfernen. WinSet Style, -0xC00000, Fenstertitel ; Um es rückgängig zu machen: WinSet Style, +0xC00000, Fenstertitel
; #2: DWM-Rendering des Fensterrahmens deaktivieren. DllCall("dwmapi\DwmSetWindowAttribute", "ptr", WinExist("Fenstertitel") , "uint", DWMWA_NCRENDERING_POLICY := 2, "int*", DWMNCRP_DISABLED := 1, "uint", 4) ; Um es rückgängig zu machen (was auch dazu führen kann, dass jede gesetzte Region ignoriert wird): DllCall("dwmapi\DwmSetWindowAttribute", "ptr", WinExist("Fenstertitel") , "uint", DWMWA_NCRENDERING_POLICY := 2, "int*", DWMNCRP_ENABLED := 2, "uint", 4)
Macht ein Fenster halbtransparent.
WinSet, Transparent , N, FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Geben Sie für N eine Zahl zwischen 0 und 255 an, um die Transparenzstärke zu bestimmen: 0 macht das Fenster durchsichtig und 255 undurchsichtig.
Geben Sie das Wort Off
an, um die Transparenz eines Fensters komplett zu deaktivieren. Dies ist funktional identisch zu WinSet, TransColor, Off, FensterTitel
. Das Wort Off
unterscheidet sich von dem Wert 255, weil es eventuell die Leistung verbessert und die Systemressourcennutzung verringert.
Mit WinSet, Transparent, 150, ahk_class Shell_TrayWnd
kann die Taskleiste transparent gemacht werden. Um das klassische Startmenü auch transparent zu machen, schauen Sie sich Beispiel #5 an. Um die Untermenüs des Startmenüs ebenfalls transparent zu machen, können Sie das Skript von Beispiel #6 einfügen.
Setzt man die Transparenzstärke auf 255, bevor man Off
verwendet, können Fensterneuzeichnungsprobleme wie ein schwarzer Hintergrund verhindert werden. Wenn das Fenster immer noch nicht korrekt neu gezeichnet werden kann, finden Sie unter Redraw eine mögliche Übergangslösung.
[v1.1.24.05+]: Dieser Unterbefehl funktioniert auch mit einem Fenster, das keine Titelleiste hat und keine AlwaysOnTop-Eigenschaft hat.
Macht alle Pixel der ausgewählten Farbe innerhalb des Zielfensters unsichtbar.
WinSet, TransColor, Farbe , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText
Dies macht es möglich, dass der Inhalt hinter dem Fenster durchscheint. Klickt der Benutzer auf einen unsichtbaren Pixel, wirkt sich der Klick auf das Fenster dahinter aus. Geben Sie für Farbe einen Farbnamen oder RGB-Wert an (verwenden Sie die Farbentabelle als Orientierungshilfe oder verwenden Sie PixelGetColor im RGB-Modus). Um den sichtbaren Bereich eines Fensters zusätzlich transparent zu machen, fügen Sie ein Leerzeichen (kein Komma) gefolgt von der Transparenzstufe (0-255) an. Zum Beispiel: WinSet, TransColor, EEAA99 150, FensterTitel
.
Geben Sie das Wort Off
an, um die Transparenz eines Fensters komplett zu deaktivieren. Dies ist funktional identisch zu WinSet, Transparent, Off, FensterTitel
. Das Wort Off
unterscheidet sich von dem Wert 255, weil es eventuell die Leistung verbessert und die Systemressourcennutzung verringert.
TransColor wird oft verwendet, um Bildschirmanzeigen (OSD) und andere visuelle Effekte zu erzeugen. Ein Beispiel dazu finden Sie auf der GUI-Seite ganz unten.
Setzt man die Transparenzstärke auf 255, bevor man Off
verwendet, können Fensterneuzeichnungsprobleme wie ein schwarzer Hintergrund verhindert werden. Wenn das Fenster immer noch nicht korrekt neu gezeichnet werden kann, finden Sie unter Redraw eine mögliche Übergangslösung.
Um die bestehende TransColor-Einstellung eines Fensters zu ändern, ist es eventuell erforderlich, die Transparenz auszuschalten, bevor die Änderung vollzogen werden kann.
[v1.1.24.05+]: Dieser Unterbefehl funktioniert auch mit einem Fenster, das keine Titelleiste hat und keine AlwaysOnTop-Eigenschaft hat.
Wenn ErrorLevel oben nicht erwähnt wird, bleibt er unverändert.
Zwar wird Transparenz in Windows 2000/XP oder höher unterstützt, allerdings könnten die Transparenzeinstellungen eines Fensters erst ab Windows XP abrufbar sein (via WinGet).
Die AlwaysOnTop-Eigenschaft eines SplashText-Fensters kann wie folgt entfernt werden:
WinSet, AlwaysOnTop, Off, Mein Splash-Fenstertitel
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
WinGet, WinHide, WinSetTitle, WinMove, WinActivate, Control
Macht alle weißen Pixel im Texteditor unsichtbar. Eventuell funktioniert dieses Beispiel nicht so gut mit dem neuen Texteditor unter Windows 11 oder höher.
WinSet, TransColor, White, Unbenannt - Editor
Schaltet den "Immer im Vordergrund"-Zustand des Taschenrechners um.
WinSet, AlwaysOnTop, Toggle, Rechner
Demonstriert den Effekt von den Unterbefehlen Transparent und TransColor. Hinweis: Drücken Sie einen dieser Hotkeys, während sich der Mauszeiger über einen via TransColor unsichtbar gemachten Pixel befindet, wird der Hotkey stattdessen mit dem Fenster hinter dem Pixel interagieren! Außerdem wird Win+G erst ab Windows XP funktionieren, weil Windows 2000 das Abrufen von Transparenzeinstellungen nicht unterstützt.
#t:: ; Drücken Sie WIN+T, um die Farbe unter dem Mauszeiger unsichtbar zu machen. MouseGetPos, MausX, MausY, MausFenster PixelGetColor, MausRGB, %MausX%, %MausY%, RGB ; Es scheint so, als müsste man erst jede vorhandene Transparenz ausschalten: WinSet, TransColor, Off, ahk_id %MausFenster% WinSet, TransColor, %MausRGB% 220, ahk_id %MausFenster% return #o:: ; Drücken Sie WIN+O, um die Transparenz des Fensters unterhalb des Mauszeigers auszuschalten. MouseGetPos,,, MausFenster WinSet, TransColor, Off, ahk_id %MausFenster% return #g:: ; Drücken Sie WIN+G, um die aktuellen Einstellungen des Fensters unterhalb des Mauszeigers anzuzeigen. MouseGetPos,,, MausFenster WinGet, Transparenz, Transparent, ahk_id %MausFenster% WinGet, TransFarbe, TransColor, ahk_id %MausFenster% ToolTip Durchsichtigkeit:`t%Transparenz%`nTransFarbe:`t%TransFarbe% return
Macht das klassische Startmenü transparent (um auch die Untermenüs des Startmenüs transparent zu machen, schauen Sie sich Beispiel #6 an).
DetectHiddenWindows, On WinSet, Transparent, 150, ahk_class BaseBar
Macht alle oder bestimmte Menüs systemweit transparent, sobald sie erscheinen. Beachten Sie, dass so ein Skript nur die Menüs von anderen Skripten transparent machen kann, nicht seine eigenen.
#Persistent SetTimer, AufMenüWarten, 5 return ; Ende des automatischen Ausführungsbereichs. AufMenüWarten: DetectHiddenWindows, On ; Könnte Menüs früher erkennen. if WinExist("ahk_class #32768") WinSet, Transparent, 150 ; Verwendet das gefundene Fenster von der darüberliegenden Zeile. return
Verwendung des Region-Unterbefehls. Eventuell funktionieren diese Beispiele nicht so gut mit dem neuen Texteditor unter Windows 11 oder höher.
Das folgende Beispiel macht alle Bereiche des Texteditors außerhalb dieses Rechtecks unsichtbar.
WinSet, Region, 50-0 W200 H250, ahk_class Notepad
Das folgende Beispiel bewirkt dasselbe wie oben, aber mit abgerundeten Ecken.
WinSet, Region, 50-0 W200 H250 R40-40, ahk_class Notepad
Das folgende Beispiel erstellt eine Ellipse anstelle eines Rechtecks.
WinSet, Region, 50-0 W200 H250 E, ahk_class Notepad
Das folgende Beispiel erstellt ein nach unten gerichtetes Dreieck.
WinSet, Region, 50-0 250-0 150-250, ahk_class Notepad
Das folgende Beispiel stellt den originalen/normalen Anzeigebereich des Fensters wieder her.
WinSet, Region,, ahk_class Notepad
Das folgende Beispiel erstellt ein durchsichtiges rechteckiges Loch innerhalb des Texteditors (oder eines anderen Fensters). Es sind zwei Rechtecke unten angegeben: ein Äußeres und ein Inneres. Jedes Rechteck besteht aus 5 X/Y-Koordinatenpaaren, weil das erste Koordinatenpaar am Ende wiederholt wird, um das Rechteck wieder zu "schließen".
WinSet, Region, 0-0 300-0 300-300 0-300 0-0 100-100 200-100 200-200 100-200 100-100, ahk_class Notepad