Hallo
Problem das ich derzeit habe:
1. EnumWindows und EnumChildWindows
Beispiel:
Ich möchte eine Liste mit MainWindowtitel und MainWindowHandle über die API passenden nebeneinander als reihe in einer ListBox auflisten.
Wie müsste ich da vor gehen?
Ich muss ehrlich zugeben ich komme damit nicht klar.
Ich bitte um gute Code Beispiele, damit ich es verstehen kann.
mfg.
Xiantrius
Problem das ich derzeit habe:
1. EnumWindows und EnumChildWindows
VB.NET-Quellcode
- <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)>
- Public Shared Function EnumWindows(ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As IntPtr) As Boolean
- End Function
- Public Delegate Function EnumWindowsProc(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean
- <Runtime.InteropServices.DllImport("user32")>
- Public Shared Function EnumChildWindows(ByVal hWndParent As IntPtr,
- ByVal lpEnumProc As EnumChildProc, ByVal lParam As Integer) As Boolean
- End Function
- Public Delegate Function EnumChildProc(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean
- Private Sub EnumChildWindows(ByVal parentWindow As IntPtr)
- EnumChildWindows(parentWindow, AddressOf ProcessChildWindow, 0)
- End Sub
- Private Function ProcessChildWindow(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean
- Return True
- End Function
Beispiel:
Ich möchte eine Liste mit MainWindowtitel und MainWindowHandle über die API passenden nebeneinander als reihe in einer ListBox auflisten.
Wie müsste ich da vor gehen?
Ich muss ehrlich zugeben ich komme damit nicht klar.
VB.NET-Quellcode
- <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)>
- Private Shared Function GetWindowTextLength(ByVal hwnd As IntPtr) As Int32
- End Function
- <Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="GetWindowText")>
- Public Shared Function GetWindowText(ByVal hwnd As Integer, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
- End Function
- <Runtime.InteropServices.DllImport("user32.dll", CharSet:=Runtime.InteropServices.CharSet.Auto)>
- Public Shared Function GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer
- End Function
- Public Function EnumProc(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean
- 'Dim Retval As String
- Dim CheckStrB As New Text.StringBuilder
- Dim WindowText As String
- Dim WindowClass As String
- On Error GoTo ErrHandler
- 'Möchte Fenstertitel mit richtige Fensterhandle in die Listbox zb. haben.
- With ListBox1.Items
- CheckStrB.Append(GetWindowTextLength(hwnd) + 1)
- WindowText = GetWindowText(CInt(hwnd), CheckStrB, CheckStrB.Length).ToString
- WindowClass = GetClassName(hwnd, CheckStrB, CheckStrB.Length).ToString
- .Add(CStr(hwnd) & " # " & WindowClass & " # " & WindowText)
- End With
- ' nächstes Child-Window ermitteln
- EnumProc = True
- Exit Function
- ErrHandler:
- WindowText = ""
- Resume Next
- End Function
Ich bitte um gute Code Beispiele, damit ich es verstehen kann.
mfg.
Xiantrius
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Xiantrius“ ()