Ci sono riuscito, riporto il codice se servisse a qualcuno
Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
Public Declare Function EnumWindows Lib "user32" (ByVal Adress As CallBack, ByVal y As Integer) As Integer
Public Declare Function IsWindowVisible Lib "user32.dll" (ByVal hwnd As IntPtr) As Boolean
Private Declare Auto Function GetWindowText Lib "User32.dll" (ByVal Hwnd As IntPtr, ByVal Txt As Byte(), ByVal Lng As Integer) As Integer
Private Declare Function GetWindowTextLengthA Lib "User32.dll" (ByVal hwnd As IntPtr) As Integer
Dim LstWindowsText As New List(Of String)
Private Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
If IsWindowVisible(hwnd) Then
Dim TheLength As Integer = GetWindowTextLengthA(hwnd)
Dim TheReturn(TheLength * 2) As Byte '2x the size of the Max length
GetWindowText(hwnd, TheReturn, TheLength + 1)
Dim TheText As String = ""
For x = 0 To (TheLength - 1) * 2
If TheReturn(x) <> 0 Then
TheText &= Chr(TheReturn(x))
End If
Next
If TheText <> "" Then
LstWindowsText.Add(TheText)
End If
End If
Return True
End Function
Per chiamarlo basta fare un
LstWindowsText.Clear()
EnumWindows(AddressOf Enumerator, 0)
e poi su LstWindowsText vi trovate la lista della proprietà Text della finestra