Rubrik: Fenster | 22.03.05 |
GetClassInfoEx-Funktion Diese Funktion ermittelt Klasseninformationen einer angegebenen Fensterklasse. | ||
Betriebssystem: Win95, Win98, WinNT 4.0, Win2000, WinME | Views: 9.342 |
Deklaration:
Declare Function GetClassInfoEx Lib "user32.dll" Alias "GetClassInfoExA" _ ( ByVal hinst As Long , ByVal lpszClass As String , lpwcx As WNDCLASSEX ) As Long
Beschreibung:
Diese Funktion ermittelt Klasseninformationen einer angegebenen Fensterklasse.
Parameter:
hinst | Erwartet das Instanzhandle des Programms, welches die Fensterklasse besitzt, oder denWert "0" wenn es sich um eine Systemklasse handelt. |
lpszClass | Erwartet den Klassennamen der Klasse, deren Informationen ermittelt werden sollen. |
lpwcx | Erwartet eine WNDCLASSEX-Strukturderen "cbSize" Option auf die Größe der Struktur gesetzt worden ist, um die Informationen der Klasse zu erhalten. |
Rückgabewert:
Ist die Funktion erfolgreich, so ist die Rückgabe ein Wert "ungleich 0", andernfalls wird derWert "0" zurückgegeben. Für erweiterte Fehlerinformationen rufen Sie die GetLastError-Funktion auf.
Beispiel:
Private Declare Function GetWindow Lib "user32.dll" ( _ ByVal hwnd As Long, _ ByVal wCmd As Long) As Long Private Declare Function GetClassInfoEx Lib "user32.dll" _ Alias "GetClassInfoExA" ( _ ByVal hinst As Long, _ ByVal lpszClass As String, _ lpwcx As WNDCLASSEX) As Long Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function GetClassName Lib "user32" _ Alias "GetClassNameA" ( _ ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Type WNDCLASSEX cbSize As Long style As Long lpfnWndProc As Long cbClsExtra As Long cbWndExtra As Long hInstance As Long hIcon As Long hCursor As Long hbrBackground As Long lpszMenuName As String lpszClassName As String hIconSm As Long End Type ' GetWindow wCmd-Konstanten Private Const GW_HWNDFIRST = 0 ' Ermittelt das erste Fenster aus der Z-Order ' in dem sich das angegebene Fenster befindet Private Const GW_HWNDLAST = 1 ' Ermittelt das letzte Fenster aus der Z-Order ' in dem sich das angegebene Fenster befindet Private Const GW_HWNDNEXT = 2 ' Ermittelt das nächste Fenster aus der ' Z-Order in dem sich das angegebene Fenster befindet Private Const GW_HWNDPREV = 3 ' Ermittelt das vorherige Fenster aus der ' Z-Order in dem sich das angegebene Fenster befindet Private Const GW_OWNER = 4 ' Ermittelt das erste Fenster, welches dem _ ' angegebenen Übergeordnet ist (nicht zu vergleiche mit Elternfenster) Private Const GW_CHILD = 5 ' Ermittelt das Fensterhandle des Kindfensters _ ' welches sich im vordergrund befindet und/oder den Focus besitzt ' eine der GetWIndowLong nIndex-Konstanten Private Const GWL_HINSTANCE = (-6)
' Ermittelt alle Kindfenster der Form in Z-Order-Reihenfolge von hinten nach vorn Private Sub Command1_Click() Dim RetHwnd As Long, FensterKlasse As WNDCLASSEX Dim ClassName As String, hInstance As Long FensterKlasse.cbSize = Len(FensterKlasse) ' erstes Kindfenster in der Kindfenster-Z-Order ermitteln RetHwnd = GetWindow(Me.hwnd, GW_CHILD) RetHwnd = GetWindow(RetHwnd, GW_HWNDFIRST) If RetHwnd << 0 Then With FensterKlasse Do ' Klassennamen ermitteln ClassName = Space(256) Call GetClassName(RetHwnd, ClassName, Len(ClassName)) ClassName = Left$(ClassName, InStr(1, ClassName, _ vbNullChar) - 1) ' Instanz ermitteln hInstance = GetWindowLong(RetHwnd, GWL_HINSTANCE) ' Fensterklasseninformationen ermitteln Call GetClassInfoEx(hInstance, ClassName, FensterKlasse) ' Informationen über die Fensterklasse des Fensters ausgeben Debug.Print "Klassenname: " & ClassName Debug.Print "Icon Handle: " & .hIcon Debug.Print "Kleiner Icon Handle: " & .hIconSm Debug.Print "Cursor Handle: " & .hCursor ' Nächstes Kindfenster ermitteln RetHwnd = GetWindow(RetHwnd, GW_HWNDNEXT) Loop Until RetHwnd = 0 End With End If End Sub