Listbox auslesen - komme nicht weiter

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von LarsP68.

    Listbox auslesen - komme nicht weiter

    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


    VB.NET-Quellcode

    1. Public Class Form1
    2. Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As CallBack, ByVal lParam As Integer) As Integer
    3. Declare Function GetParent Lib "user32" (ByVal hwnd As Integer) As Integer
    4. Declare Function GetWindow Lib "user32" (ByVal hwnd As Integer, ByVal wCmd As Integer) As Integer
    5. Declare Function GetWindowInteger Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer) As Integer
    6. Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
    7. Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Integer) As Integer
    8. Public Const GW_OWNER = 4
    9. Public Const GWL_EXSTYLE = (-20)
    10. Public Const WS_EX_TOOLWINDOW = &H80
    11. Public Const WS_EX_APPWINDOW = &H40000
    12. Public Delegate Function CallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
    13. Public Function fEnumWindowsCallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
    14. Dim lReturn As Integer
    15. Dim lExStyle As Integer
    16. Dim bNoOwner As Boolean
    17. Dim sWindowText As String = ""
    18. If IsWindowVisible(hwnd) Then
    19. If GetParent(hwnd) = 0 Then
    20. bNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
    21. lExStyle = GetWindowInteger(hwnd, GWL_EXSTYLE)
    22. If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bNoOwner) Or
    23. ((lExStyle And WS_EX_APPWINDOW) And Not bNoOwner) Then
    24. sWindowText = Strings.Space(256)
    25. lReturn = GetWindowText(hwnd, sWindowText, Strings.Len(sWindowText))
    26. If lReturn Then
    27. sWindowText = Trim(sWindowText)
    28. ListBox1.Items.Add(sWindowText)
    29. End If
    30. End If
    31. End If
    32. End If
    33. fEnumWindowsCallBack = True
    34. End Function
    35. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    36. ListBox1.Items.Clear()
    37. EnumWindows(AddressOf fEnumWindowsCallBack, 0)
    38. End Sub
    39. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    40. Dim ausgabe As String = ""
    41. For i As Integer = 0 To ListBox1.Items.Count.ToString - 1
    42. ausgabe = ausgabe & ListBox1.Items(i).ToString & vbNewLine
    43. Next
    44. TextBox1.Text = ausgabe
    45. End Sub
    46. End Class
    Willkommen im Forum. :thumbup:
    Echt guter Fehler:

    LarsP68 schrieb:

    VB.NET-Quellcode

    1. sWindowText = Trim(sWindowText)
    machst Du

    VB.NET-Quellcode

    1. sWindowText = sWindowText.Substring(0, lReturn)
    und außerdem Option Strict On: Visual Studio - Empfohlene Einstellungen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das hier ist echt hart ...

    For i As Integer = 0 To ListBox1.Items.Count.ToString - 1

    Beschäftige dich mal mit Datentypen. Das Ist ein wichtiges Thema.Option Strict on hilft dir dabei.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen