【发布时间】:2011-11-28 00:04:49
【问题描述】:
我在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);
【问题讨论】:
-
由于这似乎是 Delphi 或其他 Pascal 方言,您可能应该添加另一个标签。虽然回答 API 问题不需要该方言的特殊知识
-
我在讨论论坛和其他 QA 网站上搜索了几个小时......很多人都有同样的问题,使用众所周知的编程语言:VB、C 等。我很快拒绝了这个假设。但是,我在可疑列表中保留了我的 exe 标头、XML 清单、常量和函数声明。但我相信缺少另一个 X 因素。我在滚轮鼠标消息上设置了一个系统范围的窗口挂钩。检测到 VSCROLL,但 HSCROLL 挂钩是静默的。
-
顺便说一句:钩子是不是低级的?您能否发布您正在设置的钩子类型...? ...
WH_MOUSE或WH_MOUSE_LL? ...另外,由于这是一个钩子,您是在 x64 还是 x86 Windows 上运行,并且钩子 DLL 是 32 位还是 64 位...您甚至使用 DLL 吗? -
钩子是一个低级鼠标,声明如下:MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, hInstance, 0)。该程序是 Windows 7 64 位下的 32 位 exe 文件。垂直滚动事件会触发回调函数,但水平滚动事件不会触发。我希望你会看到一些可疑的东西。
-
好的,现在还有一件事,因为问题没有列出这些细节:您从钩子函数内部或外部调用
mouse_event以验证钩子是否有效?
标签: windows winapi setwindowshookex