我用了如下代码来改变当前输入法
cnt = GetKeyboardLayoutList(0, NULL); lpKL = (HKL FAR *)LocalAlloc(LPTR, sizeof(HKL)* cnt); cnt = GetKeyboardLayoutList(cnt, lpKL);
if ( !cnt )
{
return FALSE;
} while( 0 < cnt )
{
cnt--;
//取出现有的输入法,并和strImmName的值进行判断。
if( ( ImmGetIMEFileName(*(lpKL + cnt), szImeName, sizeof(szImeName) ) ) &&
( !lstrcmpi(strImmName, szImeName) ) )
{
hKLReturn = *(lpKL + cnt);
break;
}
}
但vista系统中,ImmGetIMEFileName函数的返回值永远是0 我获得不到当前系统中的任何输入法。所以无法改变输入法。
察看了一下vista系统的注册表,发现没有xxx.ime这样的键值。
请问,我该如何解决。
怎么才能在vista系统中改变当前输入法为我想要指定的莫一种呢?
比如 当我的程序一启动,就将输入法设置为中文。还望高人指点一二。
cnt = GetKeyboardLayoutList(0, NULL); lpKL = (HKL FAR *)LocalAlloc(LPTR, sizeof(HKL)* cnt); cnt = GetKeyboardLayoutList(cnt, lpKL);
if ( !cnt )
{
return FALSE;
} while( 0 < cnt )
{
cnt--;
//取出现有的输入法,并和strImmName的值进行判断。
if( ( ImmGetIMEFileName(*(lpKL + cnt), szImeName, sizeof(szImeName) ) ) &&
( !lstrcmpi(strImmName, szImeName) ) )
{
hKLReturn = *(lpKL + cnt);
break;
}
}
但vista系统中,ImmGetIMEFileName函数的返回值永远是0 我获得不到当前系统中的任何输入法。所以无法改变输入法。
察看了一下vista系统的注册表,发现没有xxx.ime这样的键值。
请问,我该如何解决。
怎么才能在vista系统中改变当前输入法为我想要指定的莫一种呢?
比如 当我的程序一启动,就将输入法设置为中文。还望高人指点一二。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货