3

在 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);
4

1 回答 1

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,似乎不处理这个消息,所以根本没有滚动。即使使用鼠标(没有任何附加软件包的罗技 Performance MX)也不会滚动。mouse_event因此,仅发送消息似乎没有 100% 的解决方案。

于 2011-11-30T03:00:07.197 回答