マウスの左/右ボタンが押されたときにマウスの座標を取得するにはどうすればよいですか?
低レベルのマウスフックを使用していて、カーソルの現在の位置を取得できますが、マウスボタンが押されたときに位置を取得できるようにしたいと考えています。
これどうやってするの?
マウスの左/右ボタンが押されたときにマウスの座標を取得するにはどうすればよいですか?
低レベルのマウスフックを使用していて、カーソルの現在の位置を取得できますが、マウスボタンが押されたときに位置を取得できるようにしたいと考えています。
これどうやってするの?
MouseDown イベントをキャプチャし、 MouseEventArgsからを使用してクリックの位置を取得してみませんMouseEventArgs.Location
か?
http://www.codeproject.com/KB/system/globalsystemhook.aspx-これで私の問題は解決しました。デモプロジェクトのDLLを使用し、なんとか座標を取得しました。
MouseHookプロシージャのwParam引数には、メッセージ識別子WM_LBUTTONDOWN、WM_LBUTTONUP、WM_RBUTTONDOWN、WM_RBUTTONUPなどが含まれます。これから、現在の座標でのボタンの状態を判別できます。
必要なものを取得するには、WM_LBUTTONDOWN で GetMessagePos() を呼び出します。しかし、それが低レベルのマウスフック内で機能するとは思えません。これは、メッセージ ポンプまたはウィンドウ プロシージャで使用するためのものです。
「GetMessagePos 関数は、GetMessage 関数によって取得された最後のメッセージのカーソル位置を取得します。」
本当にフックが必要ですか?
MouseHook メソッドで:
public static int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
{
//Marshall the data from the callback.
MouseHookStruct MyMouseHookStruct =
(MouseHookStruct) Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
if (nCode >= 0)
{
int xcoord = MyMouseHookStruct.pt.x;
int ycoord = MyMouseHookStruct.pt.y;
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
ここから。
http://www.codeproject.com/KB/vb-interop/MouseHunter.aspx - この小さな魅力的な情報を見つけました。残念ながら、Visual Studio 2008 はプリコンパイルされた dll を受け入れません。また、Visual Basic 6 をマシンにインストールして再コンパイルすることもできません。