繁体   English   中英

如何在不破坏死键支持的情况下使用ToUnicode?

[英]How can I use ToUnicode without breaking dead key support?

类似的问题已经被提出,所以我不打算浪费时间重新解释它,现在的讨论可以在这里找到: 键盘钩子中的ToAscii / ToUnicode破坏死键

我发布一个新问题的原因是我似乎遇到了一个“解决方案”,但我不太确定如何实现它。

这篇博文似乎提出了ToUnicode杀死死键支持问题的解决方案: http//www.siao2.com/2005/01/19/355870.aspx

但是,我不确定如何实施建议的解决方案。 推动正确的方向将非常感激。

需要说明的是,我指的是这个:

有两种方法可以解决这个问题:

1)您可以继续使用相同的信息调用ToUnicode,直到它被清除,然后再次调用它以将状态恢复到原来的状态,如果您从未输入任何内容,或者

2)您可以提前加载所有键盘信息,然后当他们键入信息时,您可以在自己的信息缓存中查找击键的含义,而无需稍后调用API。

我不太确定如何做这些事情(键盘和国际化远非我的强项),所以任何帮助将不胜感激。

谢谢

答案的第一部分完全没有信息。 但是,第二部分确实有意义。 ToUnicode() 应该是一个纯函数,它只是作为一个查找。 但事实并非如此。 但是您可以针对所有预期的输入重复调用它,将它们存储在您自己的查找表中并访问它。

我建议Microsoft在wFlags参数中添加一个lookDontTouch标志; 这将是一个简单的非破坏API修复。

如果您扩大搜索范围以包含密钥记录 ,则可能会得到一些答案。 ToUnicode相比,链接中显示的方法非常麻烦,但它有效。 它围绕从注册表中查找当前活动的键盘布局,然后手动加载和解析正确的DLL。

作为一个警告,我已经看到加载部分在64位Windows上失败了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM