在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);
答案 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%解决此问题的方法。