2013-07-19 32 views
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); 
} 

正如你所看到的,我returing -1,如果消息为鼠标滚轮的消息。这应该避免滚动当前聚焦的窗口(我不想滚动聚焦的窗口,我想滚动光标悬停的窗口)。问题是,它不取消滚动焦点窗口。那么有没有人有一个想法如何避免滚动当前聚焦的窗口?目前有两个窗口正在滚动。一只我的鼠标悬停在那里,另一只被关注。

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

回答

0

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

相关问题