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 を返します。これにより、現在フォーカスされているウィンドウのスクロールを回避する必要があります(フォーカスされたウィンドウをスクロールしたくない、カーソルが置かれているウィンドウをスクロールしたい)。問題は、フォーカスされたウィンドウのスクロールをキャンセルしないことです。現在フォーカスされているウィンドウをスクロールしないようにする方法を知っている人はいますか? 現在、スクロールされているウィンドウが 2 つあります。マウスがホバーしているものとフォーカスされているもの。

私の質問に反対票を投じないで、チャンスをください。私は本当に最善を尽くしていますが、解決策を見つけることができません。

4

1 に答える 1

0

私は解決策を見つけました。とても、とても、とてもシンプルです。マニフェストに設定<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />するか、管理者として手動で開始すると機能します:)

于 2013-07-19T12:15:19.910 に答える