Untitled

 avatar
unknown
plain_text
2 years ago
1.2 kB
8
Indexable
#include <windows.h>
#include <stdint.h>
#include <iostream>

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {

    if (nCode != HC_ACTION) {
        return CallNextHookEx(NULL, nCode, wParam, lParam);
    }

    auto kbd = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);

    if (kbd->vkCode == VK_PRIOR && !--kbd->flags) {

        keybd_event( VK_OEM_102, 0, NULL,            0 );
        keybd_event( VK_OEM_102, 0, KEYEVENTF_KEYUP, 0 );
        return 1;
    }

    if (kbd->vkCode == VK_NEXT && !--kbd->flags) {

        keybd_event( VK_SHIFT  , 0, NULL,            0 );
        keybd_event( VK_OEM_102, 0, NULL,            0 );
        keybd_event( VK_SHIFT  , 0, KEYEVENTF_KEYUP, 0 );
        keybd_event( VK_OEM_102, 0, KEYEVENTF_KEYUP, 0 );

        return 1;
    }

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

int main() {

    auto hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, nullptr, 0);
    auto msg  = MSG{};
    
    while (GetMessage(&msg, nullptr, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    UnhookWindowsHookEx(hook);
    
    return 0;
}
Editor is loading...