Rubrik: Fenster | 22.03.05 |
GetWindow-Funktion Diese Funktion ermittelt Fensterhandles von Fenstern, die dem selben Fenster in einer Z-Order Reihenfolge untergeordnet sind. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 24.044 |
Deklaration:
Declare Function GetWindow Lib "user32.dll" ( _ ByVal hwnd As Long, _ ByVal wCmd As Long) As Long
Beschreibung:
Diese Funktion ermittelt Fensterhandles von Fenstern, die dem selben Fenster in einer Z-OrderReihenfolge untergeordnet sind.
Parameter:
hwnd | Erwartet ein Fensterhandle, das dazu benutzt wird, andere Fensterhandles von Fenstern zu ermitteln, die dem selben "Eltern"-Fenster untergeordnet sind. |
wCmd | Erwartet eine der "wCmd"-Konstanten, diebeschreibt, welches Fensterhandle aus der Z-Order der Fenster ermittelt werden soll. |
wCmd Konstanten:
Const GW_HWNDFIRST = 0 ' Ermittelt das erste Fenster aus der Z-Order, in dem sich das angegebene Fenster befindet Const GW_HWNDLAST = 1 ' Ermittelt das letzte Fenster aus der Z-Order, in dem sich das angegebene Fenster befindet Const GW_HWNDNEXT = 2 ' Ermittelt das nächste Fenster aus der Z-Order, in dem sich das angegebene Fenster befindet Const GW_HWNDPREV = 3 ' Ermittelt das vorherige Fenster aus der Z-Order, in dem sich das angegebene Fenster befindet Const GW_OWNER = 4 ' Ermittelt das Fensterhandle des Fenster, welches dem angegebenen übergeordnet ist Const GW_CHILD = 5 ' Ermittelt das Fensterhandle des Kindfensters, welches sich im Vordergrund befindet und / oder den Focus besitzt
Rückgabewert:
Ist die Funktion erfolgreich, so ist die Rückgabe das Fensterhandle des ermittelten Fensters, andernfallswird der Wert "0" zurückgegeben.
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 Fensterhandle des Fenster, welches ' dem angegebenen übergeordnet ist 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