Я пытаюсь обработать сообщения WM_KeyUp, чтобы определить, какая буквенно-цифровая c клавиша (если есть) была нажата, с учетом регистра. В TApplicationEvents у нас есть обработчик OnMessage, который в моем проекте назначен на
procedure TForm1.DoOnAppMessage(var Msg: tagMSG; var Handled: Boolean);
var
CH : Char;
[...]
begin
Inc(MsgCount);
case Msg.Message of
WM_KeyUp : begin
CH := Chr(Msg.WParam);
// do something with CH
end;
end; { case ]
. Это нормально, пока, конечно, за исключением того, что я всегда получаю букву в верхнем регистре.
Так что мне, очевидно, нужно вместо этого декодировать LParam сообщения. Погуглил, я наткнулся на множество примеров декодирования LParam, но ни одного из них я не смог найти, касающийся того, что, как я думал, будет «простой» задачей получения буквенно-цифровых c ключей, отображаемых в правильном регистре. Мой вопрос: пожалуйста, не мог бы кто-нибудь показать мне, как это сделать.
Обратите внимание: я знаю, что могу получить правильные заглавные буквы, обработав сообщение WM_Char, но я не могу использовать это в реальной ситуации Я пытаюсь разобраться с (который на самом деле находится внутри крючка клавиатуры).