[技巧] 解决 Windows 8 / 10 无法通过 Screen 的 Imes 正确获取当前安装的输入法列表的问题

【问题原因】

该问题是由于微软从 Windows 8  开始,GetKeyboadLayouts 函数不再有效,而 VCL 中仍然是通过该方法获取输入法列表造成的。希望下个版本的 Delphi/C++ Builder 能够解决。

【解决办法】

如果是 Win8+,则自己从注册表读,如果是Win 7 等以前的版本,则直接取 Screen.Imes。这个函数做了一个简单的封装。

【另附】

黑夜杀手提供的一个设置默认输入法的函数,提供给需要的朋友:

【注意】

在执行上述操作之前,请确认已经修改注册表,允许每个应用独立控制输入法,黑夜杀手提供的参考代码如下:

 

分享到:

0 条评论

沙发空缺中,还不快抢~