wcpopup_win_hook 0.1.0

Hook DLL for wcpopup
Documentation
use windows::Win32::{
    Foundation::{LPARAM, LRESULT, WPARAM},
    UI::{
        Input::KeyboardAndMouse::GetCapture,
        WindowsAndMessaging::{CallNextHookEx, PostMessageW, WM_KEYDOWN},
    },
};

#[no_mangle]
unsafe extern "system" fn keyboard_hook_proc(
    ncode: i32,
    wparam: WPARAM,
    lparam: LPARAM,
) -> LRESULT {
    if ncode >= 0 {
        let capture_window = unsafe { GetCapture() };

        unsafe { PostMessageW(Some(capture_window), WM_KEYDOWN, wparam, lparam).unwrap() };
        return LRESULT(1);
    }
    CallNextHookEx(None, ncode, wparam, lparam)
}

#[no_mangle]
unsafe extern "system" fn mouse_hook_proc(ncode: i32, wparam: WPARAM, lparam: LPARAM) -> LRESULT {
    if ncode >= 0 {
        let capture_window = unsafe { GetCapture() };

        let _ =
            unsafe { PostMessageW(Some(capture_window), wparam.0 as u32, WPARAM(0), LPARAM(0)) };
    };

    CallNextHookEx(None, ncode, wparam, lparam)
}