実行アプリケーションのクラス名・キャプション列挙 <TOP>
実行アプリケーションのクラスメイトキャプションを列挙します。
GetClassName ウィンドウのクラス名を取得
GetDesktopWindow Windows のデスクトップ ウィンドウを識別
GetWindow 指定されたウィンドウと指定された関係にあるウィンドウのハンドルを取得
GetWindowLong 指定されたウィンドウに関しての情報を取得
GetWindowText ウィンドウのタイトル文字列を取得
'================================================================ '= 実行アプリケーションのクラス名・キャプション列挙 '= (ClassNameCaption.bas) '================================================================ #include "Windows.bi" ' ウィンドウのクラス名を取得 Declare Function Api_GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) ' Windows のデスクトップ ウィンドウを識別。返されるポインタは、一時的なポインタ。後で使用するために保存しておくことはできない Declare Function Api_GetDesktopWindow& Lib "user32" Alias "GetDesktopWindow" () ' 指定されたウィンドウと指定された関係にあるウィンドウのハンドルを取得 Declare Function Api_GetWindow& Lib "user32" Alias "GetWindow" (ByVal hWnd&, ByVal wCmd&) ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできる Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) ' ウィンドウのタイトル文字列を取得 Declare Function Api_GetWindowText& Lib "user32" Alias "GetWindowTextA" (ByVal hWnd&, ByVal lpString$, ByVal cch&) #define mcGWCHILD 5 #define mcGWHWNDNEXT 2 #define mcGWLSTYLE (-16) #define mcWSVISIBLE &H10000000 #define mconMAXLEN 255 Var Shared List1 As Object Var Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 12 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= クラス名取得 '================================================================ Declare Function fGetClassName(hWnd As Long) As String Function fGetClassName(hWnd As Long) As String Var strBuffer As String Var intCount As Integer strBuffer = String$(mconMAXLEN - 1, 0) intCount = Api_GetClassName(hWnd, strBuffer, mconMAXLEN) If intCount > 0 Then fGetClassName = Left$(strBuffer, intCount) End If End Function '================================================================ '= キャプション名取得 '================================================================ Declare Function fGetCaption(hWnd As Long) As String Function fGetCaption(hWnd As Long) As String Var strBuffer As String Var intCount As Integer strBuffer = String$(mconMAXLEN - 1, 0) intCount = APi_GetWindowText(hWnd, strBuffer, mconMAXLEN) If intCount > 0 Then fGetCaption = Left$(strBuffer, intCount) End If End Function '================================================================ '= 取得表示部 '================================================================ Declare Function fEnumWindows() Function fEnumWindows() Var lx As Long Var lLen As Long Var lStyle As Long Var sCaption As String lx = Api_GetDesktopWindow() lx = Api_GetWindow(lx, mcGWCHILD) List1.ResetContent Do While Not lx = 0 sCaption = fGetCaption(lx) If Len(sCaption) > 0 Then lStyle = Api_GetWindowLong(lx, mcGWLSTYLE) If lStyle And mcWSVISIBLE Then List1.AddString Left$("Class = " & fGetClassName(lx) & Space$(40), 40) & "Caption = " & fGetCaption(lx) End If End If lx = Api_GetWindow(lx, mcGWHWNDNEXT) Loop End Function '================================================================ '= 取得 '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long Ret = fEnumWindows End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End