okeyndell
@okeyndell

Как поменять символ введёный с клавиатуры, используя windows hook?

Не работает замена символа должным образом.
Т.е к примеру, мне нужно поменять символ 'з' (русский) на 'Z', но 'з' меняется на 'я', при русской раскладке. Как это исправить?
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    BOOL fEatKeystroke = FALSE;

    if (nCode == HC_ACTION)
    {
	switch (wParam)
	{
		case WM_KEYDOWN:
		case WM_SYSKEYDOWN:
		case WM_KEYUP:
		case WM_SYSKEYUP:
			PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam;
			if (fEatKeystroke = (p->vkCode == 0x50))  //redirect p to z
			{     
				if ( (wParam == WM_KEYDOWN) || (wParam == WM_SYSKEYDOWN) ) // Keydown
				{ 
					keybd_event('Z', 0, 0, 0);
				}
				else if ( (wParam == WM_KEYUP) || (wParam == WM_SYSKEYUP) ) // Keyup
				{
					keybd_event('Z', 0, KEYEVENTF_KEYUP, 0);
				}
				break;
			}
			break;
	}
	
    }
    return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
}
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Ну, видимо надо переключить раскладку на английскую.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы