用c#水平滚动

时间:2012-05-05 19:35:25

标签: c# mousemove user32

This link包含有关如何使用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创建水平滚轮运动?

2 个答案:

答案 0 :(得分:3)

如果查看您提供的相同链接,您会看到:

  

注意此功能已被取代。请改用SendInput

如果查看SendInput的文档,您会发现可以发送INPUT结构数组。如果查看INPUT的文档,您会看到可以发送键盘(KEYBDINPUT)或鼠标输入(MOUSEINPUT)。

最后,MOUSEINPUT的文档说您可以使用 MOUSEEVENTF_HWHEEL

  

Windows Vista:如果dwFlags包含MOUSEEVENTF_HWHEEL,则dwData指定车轮移动量。正值表示车轮向右旋转;负值表示车轮向左旋转。

因此,您应该使用SendInput。它有点复杂,但您可以使用它来水平滚动。您可以查看PInvoke page for SendInput以获取示例。

答案 1 :(得分:1)

MOUSEEVENTF_HWHEEL的值为0x1000。例如:

// this will cause a horizontal scroll to the right
mouse_event(0x1000, 0, 0, 200, 0);