2

我目前正在编写一个允许滚动而不聚焦窗口的应用程序。我已经做了什么:我创建了一个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);
}

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

请不要对我的问题投反对票,给我一个机会。我真的在尽我所能,但我无法找到解决方案。

4

1 回答 1

0

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

于 2013-07-19T12:15:19.910 回答