ControlSetStyle / ControlSetExStyle

Ändert den Style oder erweiterten Style eines Steuerelements.

ControlSetStyle Wert, StrlmntID , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText
ControlSetExStyle Wert, StrlmntID , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

Wert

Typ: Integer oder Zeichenkette

Geben Sie einen positiven Integer an, um den Style des Fensters vollständig zu überschreiben bzw. direkt auf Wert zu setzen.

Um Styles hinzuzufügen, zu entfernen oder umzuschalten, geben Sie eine numerische Zeichenkette an, die entweder mit einem Pluszeichen (+), Minuszeichen (-) oder Zirkumflex (^) beginnt. Der neue Style-Wert wird wie folgt berechnet (wobei AktuellerStyle mit ControlGetStyle, ControlGetExStyle, WinGetStyle oder WinGetExStyle abgerufen werden kann):

Operation Präfix Beispiel Formel
Hinzufügen + "+0x80" NeuerStyle := AktuellerStyle | Wert
Entfernen - "-0x80" NeuerStyle := AktuellerStyle & ~Wert
Umschalten ^ "^0x80" NeuerStyle := AktuellerStyle ^ Wert

Wenn Wert ein negativer Integer ist, wird er wie die entsprechende numerische Zeichenkette behandelt.

Um + oder ^ als direkt geschriebenen Text in einem Ausdruck zu verwenden, müssen Sie das Präfix oder den Wert in Anführungszeichen setzen. Zum Beispiel: ControlSetStyle("+0x80") oder ControlSetStyle("^" UmzuschaltenderStyle). Andernfalls würde z.B. der Ausdruck +123 123 erzeugen (also ohne Präfix) und ^123 einen Syntaxfehler auslösen.

StrlmntID

Typ: Zeichenkette, Integer oder Objekt

ClassNN, Text oder HWND des Steuerelements, oder ein Objekt mit einer Hwnd-Eigenschaft. Einzelheiten finden Sie unter Steuerelementidentifikatoren.

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 (wie von Window Spy angezeigt).

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 bzw. DetectHiddenText geändert werden kann. Verwendet man reine HWNDs, werden versteckte Fenster immer erkannt. 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 oder Steuerelement nicht gefunden werden konnte.

Es wird ein OSError ausgelöst, wenn der Style nicht geändert werden konnte. Eine Teiländerung wird als Erfolg gewertet.

Bemerkungen

Diese Funktion ist für die Verwendung mit Steuerelementen in einem Nicht-GUI-Fenster vorgesehen, also einem Fenster, das nicht mit der Gui-Funktion erstellt wurde. Sie funktioniert am besten mit den gängigen oder vordefinierten Steuerelementen von Microsoft. Einige Anwendungen verwenden jedoch benutzerdefinierte oder modifizierte Steuerelemente – in diesem Fall funktioniert die Funktion möglicherweise nicht wie erwartet. Für GUI-Steuerelemente ist es in der Regel sinnvoller, GuiControl.Opt zu verwenden, das die Angabe einer Style-Nummer mit einem vorangestellten Plus- oder Minuszeichen ermöglicht.

Weitere Styles finden Sie unter Fenster- und Steuerelement-Styles.

Bestimmte Style-Änderungen werden erst wirksam, wenn das gesamte Fenster via WinRedraw neu gezeichnet wird.

ControlGetExStyle ändert nur generische erweiterte Styles, wie z.B. WS_EX_CLIENTEDGE (0x200). Um steuerelementspezifische erweiterte Styles zu ändern, verwenden Sie SendMessage. Zum Beispiel würde SendMessage(0x1036, 0, 0x1, "SysListView321") (0x1036 ist LVM_SETEXTENDEDLISTVIEWSTYLE und 0x1 ist LVS_EX_GRIDLINES) Gitternetzlinien zwischen den Zeilen und Spalten in einem ListView-Steuerelement anzeigen.

ControlGetStyle / ControlGetExStyle, WinSetStyle / WinSetExStyle, Styles-Tabelle, Control-Funktionen

Beispiele

Schaltet den WS_BORDER-Style des Notepad-Eingabefelds auf den entgegengesetzten Zustand.

ControlSetStyle("^0x800000", "Edit1", "ahk_class Notepad")