首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么获取当前的输入法?

2012-03-27 
如何获取当前的输入法?? - C++ Builder / Windows SDK/API当前的控件是Edit1 输入是 中文 (简体) - 搜狗

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

热点排行