我有几个键盘,他们键入不同的TMemos。 在英文中,一切正常,但在韩语中,击键会在发送给我的onKeypress(它处理/识别不同的键盘)之前被发送到IME,所以我不能准确地告诉它之前来自哪个键盘。
我不完全知道如何使用WinApi,但我需要学习使用与IME处理的部分。 这里有很多信息,但是我需要知道如何在delphi中应用它。 我需要存储每个用户的击键并将它们发送到IME。
也许有人可以帮助我学习使用IMM.PAS
Installshield不显示正确的语言
wcout不能写出宽字符命令提示符
Python gettext:将Unicode文字转换为文本
我可以发送string到IME(Windows)来获得翻译吗?
Pango / Cairo / Fontconfig:在Windows中使Unicode字体回退/链接正常工作
为什么区域设置es_MX工作但不是es?
qt的发行窗口二进制?
如何在Linux上的Java程序中更改input法?
Windows和Linux的spring i18n行为是不同的
得到它的工作。 使用ImmGetContext,ImmSetCompositon,ImmGetComposition和normalizeString。
procedure TForm1.IMEFUNCTION(var msg: TMsg); var buf: array [0..20] of char; hHimc: HIMC; i,j: integer; str: string; temporary: PWideChar; begin hHimc:= ImmGetContext (msg.hwnd); if hHimc = 0 then Exit; fillchar (buf,20,0); ImmSetCompositionStringW (hHimc,SCS_SETSTR,PChar (''),Length(''),nil,0); ImmGetCompositionString (hHimc,GCS_COMPSTR,@buf,20); temporary:= PWideChar(Edit1.Text+buf[0]); normalizeString(5,temporary,-1,buf,20); Edit1.Text:=buf; end;//end if end;//end for ImmReleaseContext (handle,hHimc); end;
附注:我没有真正使用TEdit,我用了一个StringGrid和一个for循环。 (但总体思路是在那里)
我怀疑Windows支持你想做什么,我怀疑你可以使Windows工作不同。 这听起来像你正试图在一台计算机上使用两个物理键盘。
IMM.PAS是Windows IME API的包装,似乎没有被写入来帮助你做你想做的事情。
你为什么不使用两台电脑,两个键盘?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。