读书人

怎么获取当前的输入法?

发布时间: 2012-03-27 13:44:24 作者: rapoo

如何获取当前的输入法?? - 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));


取得当前的输入法是: "搜狗拼音输入法"
怎么样取得: "中文 (简体) - 搜狗拼音输入法"



[解决办法]

C/C++ code
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);}//--------------------------------------- 

读书人网 >C++ Builder

热点推荐