禁用滚动滚动

时间:2013-07-19 11:08:53

标签: c++ windows hook

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

LRESULT CALLBACK MouseHookCallback(int code, WPARAM wparam, LPARAM lparam)
{
    if(code < 0)
        return CallNextHookEx(mouseHookInstance, code, wparam, lparam);

    if(UserMouseHookCallback != NULL)
    {
        UserMouseHookCallback(code, wparam, lparam);//scroll the hovered window here
        if(wparam == WM_MOUSEWHEEL)
            return -1;
    }

    return CallNextHookEx(mouseHookInstance, code, wparam, lparam);
}

如您所见,如果消息是mousewheel消息,我正在退回-1。这应该避免滚动当前聚焦的窗口(我不想滚动聚焦窗口,我想滚动光标悬停的窗口)。问题是,它不会取消滚动聚焦窗口。那么有没有人知道如何避免滚动当前关注的窗口?目前有两个窗口正在滚动。我的鼠标是悬停的那个,也是聚焦的鼠标。

请不要低估我的问题,给我一个机会。我真的在努力,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

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