StrlmntID-Parameter (Steuerelementidentifikatoren)

Einige Funktionen haben einen StrlmntID-Parameter, der verwendet wird, um das Steuerelement in einem Fenster zu identifizieren, mit dem gearbeitet werden soll. Dieser Parameter kann der Text des Steuerelements oder ein anderer auf dieser Seite beschriebener Identifikator sein.

Inhaltsverzeichnis

Steuerelementidentifikatoren

Die folgenden Identifikatoren sind nach ihrer Rangfolge sortiert. Dieses Detail ist nur in seltenen Fällen von Bedeutung, nämlich dann, wenn es zu Mehrdeutigkeiten kommt. Wenn ein Fenster z.B. zwei Eingabefelder hat, das erste mit dem Text "Edit2" und das zweite mit ClassNN "Edit2", und ControlHide "Edit2" verwendet wird, wird das zweite Eingabefeld versteckt, weil ClassNN höherrangig ist.

HWND

Typ: Integer oder Objekt

Ein HWND (kurz für "Handle to Window") identifiziert ein Steuerelement eindeutig, solange es existiert. Übergeben Sie entweder das HWND direkt oder als Objekt mit einer Hwnd-Eigenschaft, wie z.B. ein GuiControl-Objekt. Dies funktioniert auch mit versteckten Steuerelementen, selbst wenn DetectHiddenWindows ausgeschaltet ist. Alle nachfolgenden Fensterparameter werden ignoriert. Bei der Übergabe eines Objekts wird ein PropertyError ausgelöst, wenn das Objekt keine Hwnd-Eigenschaft hat, oder ein TypeError, wenn es keinen reinen Integer zurückgibt.

Das HWND eines Steuerelements kann via ControlGetHwnd, GuiControl.Hwnd, WinGetControlsHwnd, MouseGetPos und DllCall abgerufen werden.

Ein HWND ist besonders nützlich, wenn Meldungen direkt an ein Steuerelement via PostMessage oder SendMessage gesendet werden, oder wenn native APIs mit DllCall aufgerufen werden. Es ist auch hilfreich, wenn Steuerelemente dynamisch erstellt oder neu angeordnet werden, da das HWND während der Lebensdauer des Steuerelements konstant bleibt.

ClassNN

Typ: Zeichenkette

Die ClassNN eines Steuerelements ist der Name seiner Fensterklasse, gefolgt von seiner Sequenznummer innerhalb des Top-Level-Fensters, das dieses Steuerelement enthält. Die Sequenznummer spiegelt die Position des Steuerelements unter den Steuerelementen derselben Klasse wider, und zwar in der Reihenfolge, in der sie erstellt wurden. Zum Beispiel ist Edit1 das erste Eingabefeld in einem Fenster und Button12 die zwölfte Schaltfläche.

Einige Klassennamen enthalten Ziffern, die nicht zur Sequenznummer des Steuerelements gehören. Zum Beispiel ist SysListView321 das erste ListView-Steuerelement in einem Fenster, nicht das dreihunderteinundzwanzigste. Um den Klassennamen ohne Sequenznummer abzurufen, übergeben Sie das HWND des Steuerelements an WinGetClass.

Die ClassNN eines Steuerelements kann via Window Spy ermittelt werden, und via ControlGetClassNN, WinGetControls und MouseGetPos abgerufen werden.

Die Sequenznummer ist kein persistenter Identifikator. Die Nummer kann sich ändern, wenn die Anwendung Steuerelemente neu erstellt, ihre Reihenfolge ändert oder dynamische oder virtualisierte UI-Elemente verwendet. Es ist möglich, dass einige moderne Frameworks (z.B. WPF oder Electron) gar keine traditionellen Win32-Klassennamen preisgeben oder bereits etablierte Klassennamen für mehrere nicht verwandte Steuerelemente verwenden.

ClassNN ist oft praktisch, wenn die Steuerelemente keinen eindeutigen Text haben und die Reihenfolge der Steuerelemente stabil bleibt. Wenn die Stabilität nicht garantiert werden kann, sollten Sie ein HWND oder einen anderen Identifikator verwenden.

Text

Typ: Zeichenkette

Der Text eines Steuerelements kann als Identifikator verwendet werden, z.B. OK für eine OK-Schaltfläche. Das Übereinstimmungsverhalten ist abhängig von SetTitleMatchMode. Verwenden Sie Text, wenn er eindeutig und stabil ist; viele Steuerelemente aktualisieren ihn dynamisch oder geben keinen verwertbaren Text preis.

Der Text eines Steuerelements kann via Window Spy ermittelt werden, und via ControlGetText, GuiControl.Text und GuiControl.Value abgerufen werden.

Weggelassen

ControlClick, ControlSend, PostMessage und SendMessage können entweder mit einem Steuerelement oder einem Top-Level-Fenster arbeiten. Das Weglassen des StrlmntID-Parameters bewirkt, dass die Funktion das Zielfenster (angegeben durch FensterTitel) anstelle eines seiner Steuerelemente verwendet.

Bemerkungen

Die folgenden Funktionen haben einen StrlmntID-Parameter: ControlAddItem, ControlChooseIndex, ControlChooseString, ControlClick, ControlDeleteItem, ControlFindItem, ControlFocus, ControlGetChecked, ControlGetChoice, ControlGetClassNN, ControlGetEnabled, ControlGetHwnd, ControlGetIndex, ControlGetItems, ControlGetPos, ControlGetStyle, ControlGetText, ControlGetVisible, ControlHide, ControlHideDropDown, ControlMove, ControlSend, ControlSetChecked, ControlSetEnabled, ControlSetStyle, ControlSetText, ControlShow, ControlShowDropDown, EditGetCurrentCol, EditGetCurrentLine, EditGetLine, EditGetLineCount, EditGetSelectedText, EditPaste, ListViewGetContent, PostMessage, SendMessage. Die meisten dieser Funktionen haben Beispiele auf der entsprechenden Seite, die die Verwendung von Steuerelementidentifikatoren demonstrieren.

ClassNN und der Text von Steuerelementen können sich ändern, wenn Anwendungen Steuerelemente neu erstellen, ihre Reihenfolge ändern, dynamische oder virtualisierte Schnittstellen verwenden oder auf Frameworks zurückgreifen, die keine stabilen Win32-Klassennamen oder Texte bereitstellen. Wenn Identifikatoren unzuverlässig sind, verwenden Sie lieber ein HWND, das für dessen Lebensdauer stabil ist, oder kombinieren Sie mehrere Kriterien. Allgemein gilt: Verwenden Sie den Text des Steuerelements, wenn er eindeutig und stabil ist, verwenden Sie ClassNN, wenn die Reihenfolge der Steuerelemente konsistent und die Lesbarkeit erwünscht ist, und verwenden Sie ein HWND, wenn maximale Stabilität erforderlich ist. Vermeiden Sie hartcodierte Identifikatoren über Anwendungsversionen hinweg, es sei denn, Sie kontrollieren die Zielanwendung.

FensterTitel-Parameter & Zuletzt Gefundenes Fenster