指定したウィンドウの情報を取得 <TOP>
マウスで指定したウィンドウの情報を取得します。
GetCursorPos マウスカーソルのスクリーン座標を取得
WindowFromPoint 指定の座標位置にあるウィンドウハンドルを取得
GetModuleFileName ロードされている実行モジュールのフルパス名を取得
GetWindowWord ウィンドウに関連付けている補足データ域からワード値を取得
GetWindowLong 指定されたウィンドウに関しての情報を取得
GetParent 指定された子ウィンドウの親ウィンドウまたはオーナーウィンドウハンドルを返す
GetClassName ウィンドウクラス名を取得
GetWindowText ウィンドウタイトル文字列を取得
TimerIntervalはプロパティで設定しています。
'================================================================ '= 指定したウィンドウの情報を取得
'= (GetWindowWord.bas) '================================================================ #include "Windows.bi" Type POINTAPI x As Long y As Long End Type ' マウスカーソル(マウスポインタ)の現在の位置に相当するスクリーン座標を取得 Declare Function Api_GetCursorPos& Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) ' 指定の座標位置にあるウィンドウハンドルを取得 Declare Function Api_WindowFromPoint& Lib "user32" Alias "WindowFromPoint" (ByVal xPoint&, ByVal yPoint&) ' ロードされている実行モジュールのフルパス名を取得 Declare Function Api_GetModuleFileName& Lib "Kernel32" Alias "GetModuleFileNameA" (ByVal hModule&, ByVal lpFileName$, ByVal nSize&) ' ウィンドウに関連付けている補足データ域からワード値を取得 Declare Function Api_GetWindowWord% Lib "user32" Alias "GetWindowWord" (ByVal hWnd&, ByVal nIndex&) ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできる Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) ' 指定された子ウィンドウの親ウィンドウまたはオーナーウィンドウのハンドルを返す Declare Function Api_GetParent& Lib "user32" Alias "GetParent" (ByVal hWnd&) ' ウィンドウのクラス名を取得 Declare Function Api_GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) ' ウィンドウのタイトル文字列を取得 Declare Function Api_GetWindowText& Lib "user32" Alias "GetWindowTextA" (ByVal hWnd&, ByVal lpString$, ByVal cch&) #define GWW_HINSTANCE -6 #define GWW_ID -12 #define GWL_STYLE -16 'アプリケーションのインスタンスハンドル #define vbCrLf (Chr$(13) & Chr$(10)) 'キャリッジリターンとラインフィード(\r\n) Var Shared Timer1 As Object Var Shared Text1 As Object Timer1.Attach GetDlgItem("Timer1") Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12 '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var pt As POINTAPI Var ptx As Long Var pty As Long Var sWindowText As String * 100 Var sClassName As String * 100 Var hWndOver As Long Var hWndParent As Long Var sParentClassName As String * 100 Var wID As Long Var lWindowStyle As Long Var hInstance As Long Var sParentWindowText As String * 100 Var sModuleFileName As String * 100 Static hWndLast As Long Var txt As String Var Ret As Long Ret = Api_GetCursorPos(pt) ptx = pt.x pty = pt.y hWndOver = Api_WindowFromPoint(ptx, pty) If hWndOver <> hWndLast Then hWndLast = hWndOver Cls txt = txt & "Window Handle : &&H" & Hex$(hWndOver) & vbCrLf Ret = Api_GetWindowText(hWndOver, sWindowText, 100) txt = txt & "Window Text : " & Left$(sWindowText, Ret) & vbCrLf Ret = Api_GetClassName(hWndOver, sClassName, 100) txt = txt & "Window Class Name : " & Left$(sClassName, Ret) & vbCrLf lWindowStyle = Api_GetWindowLong(hWndOver, GWL_STYLE) ' Window Style txt = txt & "Window Style : &&H" & Hex$(lWindowStyle) & vbCrLf 'パレントウィンドウのハンドルを取得 hWndParent = Api_GetParent(hWndOver) 'ウィンドウの情報取得 If hWndParent <> 0 Then 'WindowID取得 wID = Api_GetWindowWord(hWndOver, GWW_ID) txt = txt & "Window ID Number : &&H" & Hex$(wID) & vbCrLf txt = txt & "Parent Window Handle : &&H" & Hex$(hWndParent) & vbCrLf 'ParentWindowのテキスト取得 Ret = Api_GetWindowText(hWndParent, sParentWindowText, 100) txt = txt & "Parent Window Text : " & Left$(sParentWindowText, Ret) & vbCrLf 'クラス名取得 Ret = Api_GetClassName(hWndParent, sParentClassName, 100) txt = txt & "Parent Window Class Name: " & Left$(sParentClassName, Ret) & vbCrLf Else 'Parentの無いとき txt = txt & "Window ID Number : N/A" & vbCrLf txt = txt & "Parent Window Handle : N/A" & vbCrLf txt = txt & "Parent Window Text : N/A" & vbCrLf txt = txt & "Parent Window Class Name: N/A" & vbCrLf End If 'ウィンドウインスタンス取得 hInstance = Api_GetWindowWord(hWndOver, GWW_HINSTANCE) 'モジュールファイル名取得 Ret = Api_GetModuleFileName(hInstance, sModuleFileName, 100) txt = txt & "Module : " & Left$(sModuleFileName, Ret) & vbCrLf '結果表示 Text1.SetWindowtext txt End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End