3

マウスの左/右ボタンが押されたときにマウスの座標を取得するにはどうすればよいですか?

低レベルのマウスフックを使用していて、カーソルの現在の位置を取得できますが、マウスボタンが押されたときに位置を取得できるようにしたいと考えています。

これどうやってするの?

4

6 に答える 6

3

MouseDown イベントをキャプチャし、 MouseEventArgsからを使用してクリックの位置を取得してみませんMouseEventArgs.Locationか?

于 2010-01-15T04:22:11.540 に答える
0

http://www.codeproject.com/KB/system/globalsystemhook.aspx-これで私の問題は解決しました。デモプロジェクトのDLLを使用し、なんとか座標を取得しました。

于 2010-01-15T15:19:46.047 に答える
0

MouseHookプロシージャのwParam引数には、メッセージ識別子WM_LBUTTONDOWN、WM_LBUTTONUP、WM_RBUTTONDOWN、WM_RBUTTONUPなどが含まれます。これから、現在の座標でのボタンの状態を判別できます。

于 2010-01-15T01:53:41.090 に答える
0

必要なものを取得するには、WM_LBUTTONDOWN で GetMessagePos() を呼び出します。しかし、それが低レベルのマウスフック内で機能するとは思えません。これは、メッセージ ポンプまたはウィンドウ プロシージャで使用するためのものです。

「GetMessagePos 関数は、GetMessage 関数によって取得された最後のメッセージのカーソル位置を取得します。」

本当にフックが必要ですか?

于 2010-01-15T00:44:19.033 に答える
0

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); 
}

ここから。

于 2010-01-15T00:45:00.640 に答える
0

http://www.codeproject.com/KB/vb-interop/MouseHunter.aspx - この小さな魅力的な情報を見つけました。残念ながら、Visual Studio 2008 はプリコンパイルされた dll を受け入れません。また、Visual Basic 6 をマシンにインストールして再コンパイルすることもできません。

于 2010-01-15T10:42:45.057 に答える