1

私たちのアプリケーションは、Windows の「セキュア キオスク モード」で実行する必要があります。さまざまなアクションをブロックするさまざまな方法があります。私たちが行うことの 1 つは、SetWindowsHookEx を使用してホットキーの使用をリッスンし、WH_GETMESSAGE フックを登録し、WM_HOTKEY メッセージが届いたら、それを WM_NULL に変更することです (以下のコードを参照)。これはほとんどの場合うまく機能しますが、最近問題が発見されました。64 ビット マシンでは、ホットキーをリッスンして応答するアプリケーションが 64 ビット アプリケーションである場合、32 ビット アプリケーションではブロックできません。

私たちはこれを解決する方法を見つけようとしていますが、私が考えることができる唯一のオプションは、バックグラウンドで 64 ビット プロセスを生成して、64 ビット アプリケーションのこのフックを処理することです。他の(より単純な)代替手段はありますか?

フックのセットアップ:

HHOOK getMessageHook = SetWindowsHookEx(WH_GETMESSAGE, GetMessageProc, hInst, 0);

GetMsgProc:

LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    switch (nCode)
    {
        case HC_ACTION:
        {
            MSG *msg = (MSG *) lParam;
            if (msg->message == WM_HOTKEY)
            {
                // A hotkey was pressed, changed the message to WM_NULL
                msg->message = WM_NULL;
            }
            break;
        }

        default:
            break;
    }
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}
4

0 に答える 0