微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

禁止通过钩子滚动

我目前正在编写一个应用程序,允许滚动,而不用关注窗口。 我做了什么:我创build了一个LowLevelMouseHook 。 如果LowLevelMouseProc接收到MouseWheel消息,我正在search光标位置的句柄,并向该句柄发送滚动消息。 钩子看起来像这样:

LRESULT CALLBACK MouseHookCallback(int code,WParaM wparam,LParaM lparam) { if(code < 0) return CallNextHookEx(mouseHookInstance,code,wparam,lparam); if(UserMouseHookCallback != NULL) { UserMouseHookCallback(code,lparam);//scroll the hovered window here if(wparam == WM_MOUSEWHEEL) return -1; } return CallNextHookEx(mouseHookInstance,lparam); }

正如你所看到的,如果消息是鼠标滚轮消息,我正在回退-1。 这应该避免滚动当前聚焦的窗口(我不想滚动聚焦的窗口,我想滚动光标hover的窗口)。 问题是,它不取消滚动聚焦的窗口。 那么有没有人有一个想法如何避免滚动当前集中的窗口? 目前有两个窗口正在滚动。 一个我的鼠标hover,一个是重点。

请不要低估我的问题,给我一个机会。 我正在尽我所能,但我无法find解决scheme。

在挂接WH_CALLWNDPROC之后没有得到Window Procedure消息

如何挂钩一个特定的共享ELF库函数

以编程方式设置标题栏和边框颜色

C# – 确定用户是否正在移动一个窗口

如何在Windows平台上编写Git服务器钩子?

Windows多显示器的位置

SetwindowsHookEx,KeyboardProc和非静态成员

Win32,如何在编译的程序中使用C ++挂钩函数

C ++ Windows:从主进程和CallWndProc进程访问相同的variables

试图挂钩Notepad.exe

我找到了解决方案。 这非常非常简单。 在你的清单中设置<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />或者以管理员身份手动启动它,它工作:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐