[英]How to convert a message from a WH_KEYBOARD_LL to corespondig unicode char
你好我正在写一个多语言的应用程序,我正在使用WH_KEYBOARD_LL
钩子。 我没有说明为什么我使用钩子,我尝试了多种东西,但这是最简单,最快速的方法。 现在在钩子proc里面
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam);
我在LPARAM
参数中收到一个KBDLLHOOKSTRUCT
,其中包含按下的键的信息。 是否有任何方法可以根据用户为ex设置的当前键盘布局在unicode字符中对此信息进行协调。 如果用户有一个中文键盘布局设置并且他提出“a”键,那么我会收到一个包含“a”键扫描码的KBDLLHOOKSTRUCT
,我需要将此扫描码转换为相应的unicode字符。 我知道这是可能的,因为你可以在Microsoft Word中用中文写,我只是无法弄清楚如何去做。
谢谢。
可能是MapVirtualKeyEx或ToUnicodeEx。 无论如何,我认为MSDN的键盘输入部分的一个功能将包含一个正确的功能(它们的列表很短)。
这种转变很复杂。 即使是简单的死键也很难处理,使用IME时非常难看。
考虑拦截输入控件接收已转换字符的消息。 但当然,编码更加丑陋。
问题是普通的消息钩子需要dll注入到目标进程中,并且该dll不应该用C#编写。 但也许还有一些其他消息拦截API无需dll注入即可运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.