ウィンドウ名とクラス階層一覧を取得 <TOP>
GetWindow 指定されたウィンドウと指定された関係にあるウィンドウのハンドルを取得
GetWindowText ウィンドウのタイトル文字列を取得
GetTopWindow トップレベルの子ウィンドウを取得
GetClassName ウィンドウのクラス名を取得
'================================================================ '= ウィンドウ名とクラスの階層一覧を取得
'= (GetClassName2.bas) '================================================================ #include "Windows.bi" #define GW_CHILD 5 '基準となるウィンドウの子ウィンドウのうちトップレベルのウィンドウを検索 #define GW_HWNDNEXT 2 '基準となるウィンドウの次のウィンドウを検索 #define vbCrLf (Chr$(13) & Chr$(10)) 'キャリッジリターンとラインフィード(\r\n) ' 指定されたウィンドウと指定された関係にあるウィンドウのハンドルを取得 Declare Function Api_GetWindow& Lib "user32" Alias "GetWindow" (ByVal hWnd&, ByVal wCmd&) ' ウィンドウのタイトル文字列を取得 Declare Function Api_GetWindowText& Lib "user32" Alias "GetWindowTextA" (ByVal hWnd&, ByVal lpString$, ByVal cch&) ' トップレベルの子ウィンドウを取得 Declare Function Api_GetTopWindow& Lib "user32" Alias "GetTopWindow" (ByVal hWnd&) ' ウィンドウのクラス名を取得 Declare Function Api_GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) Var Shared Edit1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 12 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub AddChildWindows(ByVal hwndParent As Long, ByVal Level As Long) Sub AddChildWindows(ByVal hwndParent As Long, ByVal Level As Long) Var txt As String Var WT As String Var CN As String Var Length As Long Var hWnd As Long If Level = 0 Then hWnd = hwndParent Else hWnd = Api_GetWindow(hwndParent, GW_CHILD) End If Do While hWnd <> 0 WT = Space$(256) Length = Api_GetWindowText(hWnd, WT, 255) WT = Left$(WT, Length) CN = Space$(256) Length = Api_GetClassName(hWnd, CN, 255) CN = Left$(CN, Length) Edit1.SetWindowText Edit1.GetWindowText & vbCrLf & String$(2 * Level, ".") & WT & " (" & CN & ")" AddChildWindows hWnd, Level + 1 hWnd = Api_GetWindow(hWnd, GW_HWNDNEXT) Loop End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hWnd As Long Var Ret As Long hWnd = Api_GetTopWindow(0) If hWnd <> 0 Then AddChildWindows hWnd, 0 End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End