vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Fenster22.03.05
GetWindowLong-Funktion

Diese Funktion ermittelt Informationen zu einem Fenster wie z.B. die Adresse der Standardprozedur oder das Instanzhandle der Anwendung des Fensters.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  19.179 

Deklaration:

Declare Function GetWindowLong Lib "user32.dll" _
  Alias "GetWindowLongA"  ( _
  ByVal hWnd As Long, _
  ByVal nIndex As Long) As Long

Beschreibung:
Diese Funktion ermittelt Informationen zu einem Fenster wie z.B. die Adresse der Standardprozedur oderdas Instanzhandle der Anwendung des Fensters.

Parameter:
hWndErwartet das Fensterhandle der Anwendung des Fensters, zu dem die Informationen ermittelt werden sollen.
nIndexErwartet eine der "nIndex"-Konstanten die beschreibt, welche Informationen ermittelt werden sollen.

nIndex Konstanten:

Const GWL_EXSTYLE = -20
' Ermittelt die erweiterten Fensterstyles
 
Const GWL_HINSTANCE = -6
' Ermittelt das Instanzhandle der Anwendung
 
Const GWL_HWNDPARENT = -8
' Ermittelt das Fensterhandle des Elternfensters
 
Const GWL_ID = -12
' Ermittelt den Fenster ID
 
Const GWL_STYLE = -16
' Ermittelt die Standard Fensterstyles
 
Const GWL_USERDATA = -21
' Ermittelt einen 32-Bit Anwendungswert des Fensters
 
Const GWL_WNDPROC = -4
' Ermittelt die Adresse der Standard-Fensterprozedur
 
Const DWL_DLGPROC = 4
' Ermittelt die Adresse der Standard Dialogprozedur
 
Const DWL_MSGRESULT = 0
' Ermittelt das Ergebnis des letzten Ergebnisses einer Fensternachricht
 
Const DWL_USER = 8
' Ermittelt einen 32-Bit Anwendungswert des Dialogs

Rückgabewert:
Ist die Funktion erfolgreich, so ist die Rückgabe der ermittelte Wert, andernfalls wird derWert "0" zurückgegeben. Für erweiterte Fehlerinformationen können Sie die GetLastError-Funktion aufrufen.

Beispiel:

Private Declare Function GetCursorPos Lib "user32.dll" ( _
  lpPoint As POINTAPI) As Long
Private Declare Function GetClassName Lib "user32.dll" _
  Alias "GetClassNameA" ( _
  ByVal hWnd As Long, _
  ByVal lpClassName As String, _
  ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" _
  Alias "GetWindowLongA" ( _
  ByVal hWnd As Long, _
  ByVal nIndex As Long) As Long
Private Declare Function GetClassInfo Lib "user32.dll" _
  Alias "GetClassInfoA" ( _
  ByVal hInstance As Long, _
  ByVal lpClassName As String, _
   lpWndClass As WNDCLASS) As Long
Private Declare Function WindowFromPoint Lib "user32.dll" ( _
  ByVal xPoint As Long, _
  ByVal yPoint As Long) As Long
Private Declare Function IsZoomed Lib "user32.dll" (ByVal hWnd As Long) As Long 
Private Declare Function IsWindow Lib "user32.dll" (ByVal hWnd As Long) As Long 
Private Declare Function IsIconic Lib "user32.dll" (ByVal hWnd As Long) As Long 
Private Declare Function GetParent Lib "user32.dll" (ByVal hWnd As Long) As Long 
 
' GetWindowLong nIndex-Konstanten
Private Const GWL_EXSTYLE = -20 ' Ermittelt die erweiterten Fensterstyles
Private Const GWL_HINSTANCE = -6 ' Ermittelt das Instanzhandle der Anwendung
Private Const GWL_HWNDPARENT = -8 ' Ermittelt das Fensterhandle des Elternfensters 
Private Const GWL_ID = -12 ' Ermittelt den Fenster ID
Private Const GWL_STYLE = -16 ' Ermittelt die Standard Fensterstyles
Private Const GWL_USERDATA = -21 ' Ermittelt einen 32-Bit Anwendungswert des Fensters
Private Const GWL_WNDPROC = -4 ' Ermittelt die Adresse der Standard-Fensterprozedur 
Private Const DWL_DLGPROC = 4 ' Ermittelt die Adresse der Standard-Dialogprozedur 
Private Const DWL_MSGRESULT = 0 ' Ermittelt das Ergebnis des letzten  
' Ergebnisses einer Fensternachricht
Private Const DWL_USER = 8 ' Ermittelt einen 32-Bit Anwendungswert des Dialogs 
 
Private Type WNDCLASS
  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
End Type
 
Private Type POINTAPI
  x As Long
  y As Long
End Type
Private Sub Form_Load()
 
End Sub
' Informationen über das Fenster an der Mausposition
Private Sub Timer1_Timer()
  Dim Retval As Long, MPos As POINTAPI, hWnd As Long
  Dim ParentWnd As Long, IsMaximized As Boolean
  Dim IsMinimized As Boolean, ParentClassInfo As WNDCLASS
  Dim WndClassInfo As WNDCLASS, TmpBuff As String * 256
  Dim TmphInst As Long, TmpClassName As String
 
  ' Mausposition ermitteln
  Retval = GetCursorPos(MPos)
 
  ' Fensterhandle des Fensters unter dem Mauscursor ermitteln
  hWnd = WindowFromPoint(MPos.x, MPos.y)
 
  If CBool(IsWindow(hWnd)) = False Then
    Label1.Caption = "kein Fenster"
    Exit Sub
  End If
 
  ' Herausfinden ob das Fenster maximiert ist
  IsMaximized = IsZoomed(hWnd)
 
  ' Herausfinden ob das Fenster minimiert ist
  IsMinimized = IsIconic(hWnd)
 
  ' Herausfinden ob das Fenster ein Kindfenster ist
  ParentWnd = GetParent(hWnd)
 
  ' Ermitteln des Instanzhandles des Fenster
  TmphInst = GetWindowLong(hWnd, GWL_HINSTANCE)
 
  ' Ermitteln des Klassennamens
  Retval = GetClassName(hWnd, TmpBuff, Len(TmpBuff))
  TmpClassName = Left$(TmpBuff, Retval)
 
  ' ermitteln der Fenster-Klasseninformationen
  Retval = GetClassInfo(TmphInst, TmpClassName, WndClassInfo)
 
  ' Ermittelte Informationen ausgeben
  With Label1
    .Caption = ""
    .Caption = .Caption & "Fensterklasse: " & TmpClassName & vbCrLf
    .Caption = .Caption & "Fensterhandle: " & CStr(hWnd) & vbCrLf
    .Caption = .Caption & "Standardprozedur Adresse: " &  _
    CStr(WndClassInfo.lpfnWndProc) & vbCrLf
    .Caption = .Caption & "Maximiert: " & CStr(IsMaximized) & vbCrLf
    .Caption = .Caption & "Minimiert: " & CStr(IsMinimized) & vbCrLf
    .Caption = .Caption & "Elternfenster: " & CBool(ParentWnd << 0) & vbCrLf 
  End With
 
  ' Informationen des Elternfensters ermitteln
  If ParentWnd << 0 Then
 
    ' Ermitteln des Instanzhandles des Fenster
    TmphInst = GetWindowLong(ParentWnd, GWL_HINSTANCE)
 
    ' Ermitteln des Klassennamens
    Retval = GetClassName(ParentWnd, TmpBuff, Len(TmpBuff))
    TmpClassName = Left$(TmpBuff, Retval)
 
    ' ermitteln der Fenster-Klasseninformationen
    Retval = GetClassInfo(TmphInst, TmpClassName, ParentClassInfo)
 
    With Label1
      .Caption = .Caption & vbCrLf & "Elternfenster Fensterklasse:  _
      " & TmpClassName & vbCrLf
      .Caption = .Caption & "Fensterhandle: " & CStr(ParentWnd) & vbCrLf 
      .Caption = .Caption & "Standardprozedur Adresse: " &  _
      CStr(WndClassInfo.lpfnWndProc) & vbCrLf
    End With
  End If
End Sub

Diese Seite wurde bereits 19.179 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel