我需要自动输入某个字符(俄罗斯字母Э
)。在Spy++中,相应的消息如下所示:
WM_CHAR chCharCode: '221' (221) cRepeat:1 ScanCode:28 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
为了以编程方式发送此消息,我使用以下Delphi代码:
SendMessage(Self.PassengerGrid, WM_CHAR, WPARAM(221), LPARAM($280001));
当我检查在Spy++中运行我的代码的结果时,我看到以下消息:
WM_CHAR chCharCode: '89' (89) cRepeat:1 ScanCode:28 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
我的wParam
的SendMessage
调用一定有问题。
我如何修复它(使chCharcode
等于221
)?
更新1:
执行时,所选语言(根据托盘图标)从俄文更改为英文。
WPARAM
总是0x59
(89
)。更新2:使用WM_UNICHAR
而不是WM_CHAR
的没有帮助。
发布于 2012-10-18 13:49:08
您应该将字符的UTF-16代码发送为WPARAM (俄文“Э”为1069 ),例如:
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Edit1.Handle, WM_CHAR, WPARAM(1069), LPARAM(0));//$280001));
end;
https://stackoverflow.com/questions/12954545
复制相似问题