В вашем фрагменте кода множество ошибок.
Во-первых, KBDLLHOOKSTRUCT, который передается хуку, находится в lParam, а не в wParam. wParam содержит сообщение окна.
Во-вторых, вы передаете lParam как есть в элемент управления редактирования. Вам необходимо создать соответствующий lParam (см. Документацию для WM_KEYDOWN, WM_KEYUP и т. Д.).
В-третьих, вы передаете wParam процессу перехвата (который является сообщением) в качестве wParam для сообщения о восстановленной клавиатуре - это должен быть код виртуальной клавиши, полученный из KBDLLHOOKSTRUCT.
В-четвертых, если nCode <0, вы дважды вызовете CallNextHookEx. </p>