1

ユーザーがCtrlボタンを押して右クリックすると、メッセージボックスが画面に表示される手順があります。しかし、それにはループがあり、Ctrlボタンを押して右クリックを1回だけ行いますが、一連のメッセージボックスが表示されます。これを修正する方法は? https://youtu.be/LzI9M_zEEKQ

これは私のMouseProc手順です

    #define EXPORT __declspec(dllexport)
    unsigned char  KeyState[256];

    LRESULT EXPORT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
        if (nCode < 0)
            return CallNextHookEx(hHook, nCode, wParam, lParam);
        GetKeyboardState(KeyState);

        if (nCode == HC_ACTION)
        {
            if ((wParam == WM_RBUTTONUP) && (KeyState[VK_CONTROL] & 0x80))
            {
                MessageBox(NULL, L"Ctrl + Right Click", L"Mouse hook", MB_OK);
            }
        }
        return CallNextHookEx(hHook, nCode, wParam, lParam);
    }

読んでくれてありがとう。

4

1 に答える 1

0

通常のメッセージ フック フローを壊すため、メッセージ フックでは使用MessageBox()しないでください。MessageBox() は独自のモーダル ループを実行します。

正確に必要な場合は、カスタム メッセージとハンドラーMessageBoxを使用する必要があります。PostMessageこの場合、MessageBox は後で呼び出されます。CallNextHookEx(hHook, nCode, wParam, lParam);

于 2015-10-27T17:42:35.180 に答える