指定の方法でウィンドウのハンドル取得
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で指定したウィンドウのハンドルを取得する戻り値
ウィンドウとの関係を指定する定数を一つ
正常終了のとき ウィンドウのハンドルuCmdの定数
エラーのとき 0
サンプル
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