カーソル位置のウインドウハンドル・クラス名を取得 <TOP>
カーソル位置のウインドウハンドル・クラス名を取得します。
GetCursorPos カーソルの現在のスクリーン座標の取得
WindowFromPoint 指定の座標位置にあるウィンドウハンドルを取得
GetClassName ウィンドウのクラス名を取得
図は、F-Basic の「翻訳」アイコン上にマウスがある状態を示しています。
'================================================================ '= カーソル位置のウインドウハンドル・クラス名を取得 '= (WindowFromPoint.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_GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) Var Shared Timer1 As Object Var Shared Text(5) As Object Timer1.Attach GetDlgItem("Timer1") For i = 0 To 5 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) Text(i).SetFontSize 14 Next '================================================================ '= '================================================================ Declare Sub Mainform_Start edecl () Sub Mainform_Start() Timer1.SetInterval 50 Timer1.Enable -1 End Sub '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var WinPoint As POINTAPI Var hWnd As Long Var ClsNameBuf As String * 128 Var ClsNameLen As Long Var Ret As Long 'カーソル位置のスクリーン座標を取得 Ret = Api_GetCursorPos(WinPoint) '座標を表示 Text(3).SetWindowText "(" & Str$(WinPoint.x) & "," & Str$(WinPoint.y) & ")" '座標を含むウィンドウのハンドルを取得 hWnd = Api_WindowFromPoint(WinPoint.x, WinPoint.y) 'ウィンドウのハンドルを取得できたときは If hWnd <> 0 Then 'ウィンドウのハンドルを表示 Text(4).SetWindowText hex$(hWnd) 'ウィンドウのクラス名を取得 ClsNameLen = Api_GetClassName(hWnd, ClsNameBuf, Len(ClsNameBuf)) 'ウィンドウのクラス名を表示 Text(5).SetWindowText Left$(ClsNameBuf, InStr(ClsNameBuf, Chr$(0)) - 1) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End