他アプリケーション上のマウスポインタ座標を取得したいのですが
どのようにすれば良いのでしょうか?
GetCursorPosは画面全体の座標で取得するので無理でした
何か良いAPI等はあるのでしょうか?
調べて見たものの見つかりませんでした
よろしくおねがいします
このサンプルをもう少し工夫して、座標変換すればいいはず
指定された座標を含むウィンドウのハンドルを取得する(WindowFromPoint)
http://naoko.wankuma.com/win32api/win32api_0010_WindowFromPoint.html
他アプリのクライアント座標で取得したいということでしょうか?
それならば、GetCursorPos で得た座標をAPIの ScreenToClient でクライアント座標に変換すれば求められます。
スクリーン座標⇔クライアント座標
http://www5d.biglobe.ne.jp/~tomoya03/shtml/vbapi/ConvertPos.htm
>>やじゅさん
開発環境を書き忘れていましたVB6です。
サンプルコードの提供ありがとうございました
>>石さん
ありがとうございます
こんなAPIがあったんですね驚きです
コードを少し改造し
'構造体の定義
Private Type POINT
x As Long
y As Long
End Type
'APIの宣言
'マウスカーソルの現在の位置を、スクリーン座標で取得
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINT) As Long
'hwnd ウィンドウのハンドルを指定、このクライアント座標が変換される
'スクリーン座標で指定された点の座標を、クライアント座標に変換
Private Declare Function ScreenToClient Lib "user32" _
(ByVal hwnd As Long, lpPoint As POINT) As Long
'クライアント座標で指定された点の座標を、スクリーン座標に変換
Private Declare Function ClientToScreen Lib "user32" _
()
Private Sub Timer1_Timer()
Dim hwnd
hwnd = FindWindow(vbNullString, "電卓")
Dim p As POINT
Dim msg As String
Call GetCursorPos(p)
Label3.Caption = ScreenToClient(hwnd, p)
msg = "クライアント座標 " & "(" & p.x & "," & p.y & ")"
Label2.Caption = msg
End Sub
とすると見事に電卓上の座標を取得してくれました
本当にありがとうございました。