Visual C ++ Win32 API-код для перехвата определенного нажатия клавиши - PullRequest
0 голосов
/ 15 сентября 2018

Мои окна 10 набирают символ минус (-) каждые несколько минут, я проверил его и обнаружил, что это не проблема моей клавиатуры. Теперь я хочу написать программу, работающую в фоновом режиме, которая перехватывает и удаляет нежелательный символ, когда я делаю какую-то серьезную работу? Как это сделать с помощью Win32 API? (Таким образом, я также изучу Win32 API.)

Использование инструментов -

  • Visual Studio C ++ 2010, экспресс-
  • Win 10 sdk.

Я перехожу по этой ссылке https://docs.microsoft.com/en-us/windows/desktop/learnwin32/keyboard-input

1 Ответ

0 голосов
/ 15 сентября 2018
#include <Windows.h>
#include <stdio.h>

static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if ((wParam == WM_KEYDOWN || wParam == WM_KEYUP) && lParam != NULL)
    {
        if (((LPKBDLLHOOKSTRUCT)lParam)->vkCode == VK_OEM_MINUS)
        {
            return 1;
        }
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    HHOOK hHook = SetWindowsHookExW(WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL, 0);
    MessageBoxW(NULL, L"hooking", L"", MB_ICONEXCLAMATION | MB_SYSTEMMODAL);
    UnhookWindowsHookEx(hHook);
    return 0;
}

Соберите и запустите эту программу, вы обнаружите, что нигде не можете набрать '-' на экране.

Если это не работает для какого-либо целевого процесса, запустите эту программу с правами администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...