2

このリンクには、user32.dll にある mouse_event 関数の使用方法に関する役立つ情報が含まれています。

そのリンクに基づいて、次のようなことでスクロールできることがわかりました。

        [DllImport("user32.dll")]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);


        public void Scroll(){
              // this will cause a vertical scroll
              mouse_event(0x0800, 0, 0, 500, 0);
        }

        public void Click(){
              // this will cause a left mouse click
              mouse_event(0x0002, 0, 0, 0, 0);
              Thread.Sleep(1);
              mouse_event(0x0004, 0, 0, 0, 0);
        }

        // etc...

とにかく、そのリンクを見ると、MOUSEEVENTF_HWHEEL の int 値が含まれていません。横スクロールが使えるようになりたいです。move_event を使用して水平ホイールの動きを作成するにはどうすればよいですか?

4

2 に答える 2

4

提供した同じリンクを見ると、次のことがわかります。

注 この関数は置き換えられました。代わりにSendInputを使用してください。

SendInput のドキュメントを見ると、INPUT構造体の配列を送信できることがわかります。INPUT のドキュメントを見ると、キーボード (KEYBDINPUT) またはマウス入力 (MOUSEINPUT) を送信できることがわかります。

最後に、 MOUSEINPUT のドキュメントには、MOUSEEVENTF_HWHEEL使用できると書かれています。

Windows Vista: dwFlags に MOUSEEVENTF_HWHEEL が含まれている場合、dwData はホイールの移動量を指定します。正の値は、ホイールが右に回転したことを示します。負の値は、ホイールが左に回転したことを示します。

したがって、使用する必要がありますSendInput。少し複雑ですが、これを使用して水平方向にスクロールできます。SendInputの PInvoke ページで例を確認できます。

于 2012-05-05T19:45:11.220 に答える
1

の値MOUSEEVENTF_HWHEELは 0x1000 です。たとえば、次のようになります。

// this will cause a horizontal scroll to the right
mouse_event(0x1000, 0, 0, 200, 0);
于 2012-05-05T19:46:03.787 に答える