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_HWHEEL0x1000。例如:

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