当前网络上提供的解决方案,都是使用InputLanguage类提供的方法,但是这种方法在win10操作系统中是**获取不到**输入法列表的,请问有什么别的方式可以获取设置输入法?
经过我实际测试,在WIN10下,**InputLanguage**只能取到中文、英文输入,不能检测到具体的输入法;另外,网上提供的读**取注册表的**方式,在WIN10下也行不通,注册表中根本没有相关的项。如下:
for (int i=0 ; i< TotalKbLayout ; i++)
{
string RegKey=String.Format("System//CurrentControlSet//Control//Keyboard Layouts//{0:X8}",KbList[i]);
RegistryKey rk=Registry.LocalMachine.OpenSubKey(RegKey);
if (rk==null)
continue;
string ImeName=(string)rk.GetValue("layout text");
if (ImeName==null)
continue;
FImes.Add(ImeName, KbList[i]);
}
楼主解决问题了吗,我也困扰了好久
我也遇到这个问题了 你们解决了没?
提供一个可以参考的逻辑(Delphi版),从注册表,可以获取win10的输入法列表;只是win10安全度变高,无法调用方法的模式直接更改输入法;不过可以通过模拟键盘的方式,进行输入法切换;后续如果优化,则再更新解答;
具体实现方式参考:
不过发现一个问题:win10的输入法获取值是空的,其他输入法可以获取到具体的输入法名字;可能和系统融合的问题吧;