WinSet

Führt eine Vielzahl von Änderungen an einem bestimmten Fenster durch, wie z. B. "immer im Vordergrund" und Transparenz.

WinSet, Unterbefehl, Wert , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Parameter

Unterbefehl, Wert
Diese Parameter sind voneinander abhängig und können wie unten gezeigt genutzt werden.
Fenstertitel
Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie auf der Seite Fenstertitel-Parameter & Zuletzt Gefundenes Fenster.
Fenstertext
Eine Zeichenkette, die in einem der Textelemente des Zielfensters enthalten ist (eventuell vorhandene Textelemente können mit dem internen Tool Window Spy aufgedeckt werden). Versteckte Textelemente werden nur erkannt, wenn DetectHiddenText eingeschaltet ist.
Titelausnahme
Ignoriert Fenster, deren Titel diesen Wert enthalten.
Textausnahme
Ignoriert Fenster, deren Textelemente diesen Wert enthalten.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

AlwaysOnTop

Ändert ein Fenster, so dass es immer über allen anderen Fenstern liegt.

WinSet, AlwaysOnTop , OnOffToggle, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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. Fehlt der OnOffToggle-Parameter oder ist er leer, gilt standardmäßig Toggle. Man kann das Wort Topmost anstelle von AlwaysOnTop verwenden.

[v1.1.30+]: Die dezimalen Werte 1, 0 und -1 können anstelle von On, Off und Toggle verwendet werden.

Bottom

Sendet das Fenster an das untere Ende des Stapels, so dass es unter allen anderen Fenstern liegt.

WinSet, Bottom ,, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Das gleiche kann auch durch Drücken von Alt+Esc erreicht werden.

Top

Sendet das Fenster an das obere Ende des Stapels, ohne es dabei explizit zu aktivieren.

WinSet, Top ,, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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.

Disable

Deaktiviert die Interaktion mit einem Fenster.

WinSet, Disable ,, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Wenn die Interaktion mit einem Fenster deaktiviert ist, kann der Benutzer es weder verschieben noch mit dessen Steuerelementen interagieren. Außerdem werden deaktivierte Fenster in der Alt-Tab-Liste nicht angezeigt.

Enable

Aktiviert die Interaktion mit einem Fenster.

WinSet, Enable ,, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Redraw

Zeichnet ein Fenster neu.

WinSet, Redraw ,, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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.

Style

Ändert den Style eines Fensters.

WinSet, Style, N , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Wenn das erste Zeichen von N ein Plus- oder Minuszeichen ist, werden die in N angegebenen Styles hinzugefügt oder 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).

ExStyle

Ändert den erweiterten Style eines Fensters.

WinSet, ExStyle, N , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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.

Region

Ändert die Form eines Fensters zu einem Rechteck, Polygon oder einer Ellipse.

WinSet, Region , Optionen, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Fehlt der Optionen-Parameter oder ist er leer, 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. Wenn w-h fehlt, wird 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 #5 und Beispiel #6 im unteren Bereich dieser Seite an, wie man diesen Unterbefehl verwendet.

Transparent

Macht ein Fenster halbtransparent.

WinSet, Transparent , N, Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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 Performance 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, siehe Beispiel #3. Um die Untermenüs des Startmenüs ebenfalls transparent zu machen, können Sie das Skript von Beispiel #4 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.

TransColor

Macht alle Pixel der ausgewählten Farbe innerhalb des Zielfensters unsichtbar.

WinSet, TransColor, Farbe , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

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. Fügen Sie in Farbe einen Farbnamen oder RGB-Wert ein (siehe Farbtabelle oder verwenden Sie PixelGetColor im RGB-Modus). Um den sichtbaren Bereich eines Fensters zusätzlich transparent zu machen, fügt man ein Leerzeichen (kein Komma) gefolgt von der Transparenzstufe (0-255) ein. 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 Performance 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.

Bemerkungen

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 unterscheiden zwischen Groß- und Kleinschreibung. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

Siehe auch

WinGet, WinHide, WinSetTitle, WinMove, WinActivate, Control

Beispiele

Beispiel #1: Verschiedenes

WinSet, Transparent, 200, Unbenannt - Editor ; Macht das Fenster ein wenig transparent.
WinSet, TransColor, White, Unbenannt - Editor ; Macht alle weißen Pixel unsichtbar.
WinSet, AlwaysOnTop, Toggle, Rechner ; Schaltet den "Immer im Vordergrund"-Zustand des Taschenrechners um.

Beispiel #2

Hier sind einige Hotkeys, die den Effekt von den Unterbefehlen Transparent und TransColor demonstrieren. 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%TransColor%
return

Beispiel #3

Macht das klassische Startmenü transparent (um auch die Untermenüs des Startmenüs transparent zu machen, siehe Beispiel #4):

DetectHiddenWindows, On
WinSet, Transparent, 150, ahk_class BaseBar

Beispiel #4

Um alle oder bestimmte Menüs im gesamten System transparent zu machen, lässt man ein Skript wie das folgende dauerhaft laufen. 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

Beispiel #5

Verschiedene Beispiele für den Region-Unterbefehl:

WinSet, Region, 50-0 W200 H250, ahk_class Notepad  ; Macht alle Bereiche des Texteditors außerhalb dieses Rechtecks unsichtbar.
WinSet, Region, 50-0 W200 H250 R40-40, ahk_class Notepad  ; Das gleiche wie oben, aber mit abgerundeten Ecken.
WinSet, Region, 50-0 W200 H250 E, ahk_class Notepad  ; Eine Ellipse anstelle eines Rechtecks.
WinSet, Region, 50-0 250-0 150-250, ahk_class Notepad  ; Ein nach unten gerichtetes Dreieck.
WinSet, Region,, ahk_class Notepad ; Stellt den originalen/normalen Anzeigebereich des Fensters wieder her.

Beispiel #6

Hier ist eine Region mit einem komplexeren Bereich. Es 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