Hallo zusammen,
komme leider nicht weiter beim AUslesen einer Listbox.
Die Listbox wird über WIN32 API mit den Fensternamen der aktuell offenen Fenster gefüllt.
Das klappt auch soweit.
Nun möchte ich die Listbox auslesen und weiterverarbeiten.
Am einfachsten erst mal in einen einzigen String einlesen und dann in einer Textbox ausgeben.
Es wird aber lediglich nur das erste Item der Listbox ausgelesen und in der Textbox gezeigt.
Irgendwo habe ich einen Denkfehler, kann jemand helfen?
Danke vorab und Gruß
Lars
komme leider nicht weiter beim AUslesen einer Listbox.
Die Listbox wird über WIN32 API mit den Fensternamen der aktuell offenen Fenster gefüllt.
Das klappt auch soweit.
Nun möchte ich die Listbox auslesen und weiterverarbeiten.
Am einfachsten erst mal in einen einzigen String einlesen und dann in einer Textbox ausgeben.
Es wird aber lediglich nur das erste Item der Listbox ausgelesen und in der Textbox gezeigt.
Irgendwo habe ich einen Denkfehler, kann jemand helfen?
Danke vorab und Gruß
Lars
VB.NET-Quellcode
- Public Class Form1
- Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As CallBack, ByVal lParam As Integer) As Integer
- Declare Function GetParent Lib "user32" (ByVal hwnd As Integer) As Integer
- Declare Function GetWindow Lib "user32" (ByVal hwnd As Integer, ByVal wCmd As Integer) As Integer
- Declare Function GetWindowInteger Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer) As Integer
- Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
- Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Integer) As Integer
- Public Const GW_OWNER = 4
- Public Const GWL_EXSTYLE = (-20)
- Public Const WS_EX_TOOLWINDOW = &H80
- Public Const WS_EX_APPWINDOW = &H40000
- Public Delegate Function CallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
- Public Function fEnumWindowsCallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
- Dim lReturn As Integer
- Dim lExStyle As Integer
- Dim bNoOwner As Boolean
- Dim sWindowText As String = ""
- If IsWindowVisible(hwnd) Then
- If GetParent(hwnd) = 0 Then
- bNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
- lExStyle = GetWindowInteger(hwnd, GWL_EXSTYLE)
- If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bNoOwner) Or
- ((lExStyle And WS_EX_APPWINDOW) And Not bNoOwner) Then
- sWindowText = Strings.Space(256)
- lReturn = GetWindowText(hwnd, sWindowText, Strings.Len(sWindowText))
- If lReturn Then
- sWindowText = Trim(sWindowText)
- ListBox1.Items.Add(sWindowText)
- End If
- End If
- End If
- End If
- fEnumWindowsCallBack = True
- End Function
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ListBox1.Items.Clear()
- EnumWindows(AddressOf fEnumWindowsCallBack, 0)
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- Dim ausgabe As String = ""
- For i As Integer = 0 To ListBox1.Items.Count.ToString - 1
- ausgabe = ausgabe & ListBox1.Items(i).ToString & vbNewLine
- Next
- TextBox1.Text = ausgabe
- End Sub
- End Class