Крючок клавиатуры: изменить код клавиши - PullRequest
1 голос
/ 01 апреля 2011

Я подключил клавиатуру какого-то процесса. Теперь мне нужно изменить ключевое сообщение, отправленное процессу.

Например: из строчных в прописные и наоборот.

Как я могу это сделать?

1 Ответ

0 голосов
/ 09 апреля 2011

Если ваш прототип функции выглядит следующим образом: LRESULT CALLBACK WndProc( HWND hWnd, UING uMsg, WPARAM wParam, LPARAM lParam ), значение вашего письма находится внутри wParam.Предполагая чистый ввод с клавиатуры ASCII, вы можете использовать следующее:

short newKeyCode = (char)wParam;
if (uMsg == WM_CHAR || uMsg == WM_SYSCHAR)
if (newKeyCode - 'a' < 26) {
  newKeyCode = newKeyCode - 'a' + 'A';
} else {
  newKeyCode = newKeyCode - 'A' + 'a';
}

Конечно, если вы работаете в системе Windows после 2000 (и, следовательно, работаете на архитектуре NT), wParam будет Unicodeзначение (и UTF-16, как в соглашении Windows), поэтому вашей программе, возможно, придется поиграться с этим, чтобы привести его в хорошее состояние, но в остальном это все, что вам нужно.

...