GetWindow

機能
指定の方法でウィンドウのハンドル取得
Declare Function GetWindow Lib "user32.dll"  _
(ByVal hWnd As Long, ByVal uCmd As Long) As Long
Declare Function GetWindow Lib "user32.dll"  _
(ByVal hWnd As Integer, ByVal uCmd As Integer) As Integer

HWND GetWindow(
HWND hWnd,
UINT uCmd
);
引数
hWnd

ウィンドウのハンドル
uCmd
hWndで指定したウィンドウのハンドルを取得する
ウィンドウとの関係を指定する定数を一つ
戻り値
正常終了のとき  ウィンドウのハンドル
エラーのとき  0
uCmdの定数

GW_CHILD = 5             hWndが親ウィンドウのとき、Zオーダーの
                         トップの位置にある子ウィンドウを検索
                         (孫ウィンドウは検索しない)
GW_HWNDFIRST = 0         hWndと同じ属性(トップレベル、子ウィンドウなど)
                          のウィンドウのうち、Zオーダーのトップ位置にある
                          ウィンドウのハンドルを返す
GW_HWNDLAST = 1          同、Zオーダーのラストに位置するウィンドウのハンドルを返す
GW_HWNDNEXT = 2          ウィンドウリストの中でhWndで指定したウィンドウの次にある
                          ウィンドウのハンドルを返す
GW_HWNDPREV = 3          同、前にあるウィンドウのハンドルを取得
GW_OWNER = 4             ウィンドウのオーナーウィンドウのハンドルを返す
サンプル
ダウンロード(GetWindow.lzh 1.84KB)

Private Sub Command1_Click()
Me.List1.Clear

Dim hWnd As Long, Temp As String

'ウィンドウリストを自分自身から検索
hWnd = GetWindow(Me.hWnd, GW_HWNDFIRST)

'有効なウィンドウハンドルを取得したとき、処理を続ける
Do Until hWnd = 0
    If hWnd <> Me.hWnd Then
        'ウィンドウキャプションを取得
        Temp = String(256, Chr(0))
        Call GetWindowText(hWnd, Temp, 256)
        a = InStr(Temp, Chr(0))
        If a > 1 Then
            Temp = Mid(Temp, 1, a - 1)
        Else
            Temp = ""
        End If
        Me.List1.AddItem "&H" + Hex(hWnd) + Chr(9) + Temp
    End If
    '次のウィンドウリストを検索
    hWnd = GetWindow(hWnd, GW_HWNDNEXT)
Loop
End Sub