我在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下创build了第二个32位的exe程序,只有当水平滚轮滚动时,鼠标才能发送消息。 该钩子接收VSCROLL,但没有HSCROLL消息。
MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, hInstance, 0);
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旗舰版)
编辑
有一件事要注意:程序本身需要处理消息。 火狐例如呢。 它显示了与倾斜鼠标滚轮相同的行为:页面相应地向左/向右滚动。 其他程序,如IE,似乎不处理这个消息,所以根本不滚动。 即使使用鼠标(没有任何附加软件包的Logitech Performance MX)也不会滚动。 所以,通过发送mouse_event
消息,似乎没有100%的解决方案。