vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Fenster22.03.05
GetClassInfoEx-Funktion

Diese Funktion ermittelt Klasseninformationen einer angegebenen Fensterklasse.

Betriebssystem:  Win95, Win98, WinNT 4.0, Win2000, WinMEViews:  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:
hinstErwartet das Instanzhandle des Programms, welches die Fensterklasse besitzt, oder denWert "0" wenn es sich um eine Systemklasse handelt.
lpszClassErwartet den Klassennamen der Klasse, deren Informationen ermittelt werden sollen.
lpwcxErwartet 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

 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.