如何获取当前的输入法?? - C++ Builder / Windows SDK/API
当前的控件是Edit1 输入是 "中文 (简体) - 搜狗拼音输入法"
想在Edit1 失去焦点是保存这个输入法,当获得焦点是重新设置,(不能用ImeName设置,因为每个人使用的输入法不同)
如何获得当前的输入法名称??
找到这段代码:
char szBuf[25];
double thId;
HANDLE hCurrentKBLayout;
//取回描述应用程序键盘布局的句柄,0表示取当前输入法
hCurrentKBLayout = GetKeyboardLayout(0);
memset(szBuf, 0x00, 25);
//获取指定输入法的名称
ImmGetDescription(hCurrentKBLayout, szBuf, 50);
if(String(szBuf).Length()==0)
strcpy(szBuf,"系统默认");
ShowMessage("当前输入法: " + String(szBuf));
取得当前的输入法是: "搜狗拼音输入法"
怎么样取得: "中文 (简体) - 搜狗拼音输入法"
[解决办法]
HKL myhkl;void __fastcall TForm1::Edit6Exit(TObject *Sender){ myhkl=GetKeyboardLayout(0);//获得当前输入法 if(ImmIsIME(myhkl)) ImmSimulateHotKey(Handle,IME_CHOTKEY_IME_NONIME_TOGGLE);}//---------------------------------------void __fastcall TForm1::Edit6Enter(TObject *Sender){ if(ImmIsIME(myhkl)) ActivateKeyboardLayout(myhkl,KLF_ACTIVATE);}//---------------------------------------