水平滚动不起作用mouse_event(MOUSEEVENTF_HWHEEL)

时间:2011-11-28 00:04:49

标签: windows winapi setwindowshookex

在Windows 7下的Delphi 3中调用此方法时没有水平滚动:

const MOUSEEVENTF_HWHEEL = $1000;
mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);

MOUSEEVENTF_WHEEL的垂直滚动效果很好。结果与SendInput相同,返回值表示成功。我当前的鼠标支持水平倾斜,但没有水平滚动。

使用MOUSEEVENTF_HWHEEL需要什么?

SDK文档:http://bit.ly/mouse_event

鼠标悬挂

我在Windows 7下创建了第二个32位exe程序,仅查看鼠标是否在滚动水平滚轮时发送消息。此挂钩接收VSCROLL但没有HSCROLL消息。

MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, hInstance, 0);

1 个答案:

答案 0 :(得分:2)

int main()
{
    Sleep(20000); // enough time to switch windows and position the mouse pointer
    mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);
    return 0;
}

向右滚动我选择的firefox页面。必须选择窗口,鼠标指针必须在页面上。我启用了鼠标。或者在测试时关闭鼠标(使用鼠标本身的开/关开关),结果是一样的。 我的鼠标也有水平倾斜,没有滚动条。 (Windows 7终极版)

修改

有一点需要注意:程序本身需要处理消息。例如Firefox。它显示与倾斜鼠标滚轮相同的行为:页面相应地向左/向右滚动。 其他程序,如IE,似乎没有处理此消息,因此根本没有滚动。即使使用鼠标(没有任何附加软件包的Logitech Performance MX)也不会滚动。 因此,通过发送mouse_event消息似乎没有100%解决此问题的方法。