首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >奇怪的WM_CHAR行为(错误的chCharCode)

奇怪的WM_CHAR行为(错误的chCharCode)
EN

Stack Overflow用户
提问于 2012-10-18 12:22:27
回答 1查看 1.9K关注 0票数 1

我需要自动输入某个字符(俄罗斯字母Э)。在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

我的wParamSendMessage调用一定有问题。

我如何修复它(使chCharcode等于221)?

更新1:

  • 发生此错误的机器有两种键盘语言--英语和俄语。
  • 我注意到当以下代码 SendMessage(MyGridHandle,WM_KEYDOWN,VK_OEM_7,LPARAM($390000));SendMessage(MyGridHandle,WM_CHAR,WPARAM(221年),LPARAM(280001美元));SendMessage(MyGridHandle,WM_KEYUP,VK_OEM_7,LPARAM($c0390001));

执行时,所选语言(根据托盘图标)从俄文更改为英文。

  • 无论我在WM_CHAR中发送什么字符,消息的WPARAM总是0x59 (89)。

更新2:使用WM_UNICHAR而不是WM_CHAR没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-18 13:49:08

您应该将字符的UTF-16代码发送为WPARAM (俄文“Э”为1069 ),例如:

代码语言:javascript
运行
复制
procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Edit1.Handle, WM_CHAR, WPARAM(1069), LPARAM(0));//$280001));
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12954545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档