ウインドウの列挙
今回はリストボックスを使用しています。リストボックスの基本的な使い方については、他のサイトに腐るほどあるので、ここでいちいち解説はしません。
ここでは、ウインドウの列挙(EnumWindows関数を使用)を説明します。
EnumWindows関数は以下のようなものです。
コールバック関数の名前は特に決まっていません。分かりやすい名前を付けると良いでしょう。
今回はプロジェクトを作成します。作るのはリストボックスだけです。IDはListBox1のままにしておきます。
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Declare Function EnumWindows Lib"User32" (lpEnumFunc As HWND , lp As DWord) As Long
Dim hList As HWND 'リストボックスのハンドル
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
WDEL_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hList = GetDlgItem(hMainWnd , ListBox1)
'ウインドウを列挙し、リストボックスに入れる
EnumWindows(AddressOf(EnumWndProc) , 0)
End Sub
'コールバック関数
Function EnumWndProc(hWnd As HWND , lp As DWord) As Long
'リストボックスにウインドウのタイトルを入れる
Dim buf[200] As Byte
GetWindowText(hWnd , buf , 200)
If buf[0] <> 0 Then '名無しウインドウでなければ
SendMessage( hList , LB_ADDSTRING , 0 , buf)
End If
EnumWndProc = TRUE'列挙を続けるならTRUE、やめるならFALSE
End Function

これだけでは何の役にも立ちません。
更新や、ウインドウを閉じる機能、等があればまともなソフトになるでしょう。