Chinaunix首页 | 论坛 | 博客
  • 博客访问: 562247
  • 博文数量: 97
  • 博客积分: 5090
  • 博客等级: 大校
  • 技术积分: 969
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-01 14:56
文章分类

全部博文(97)

文章存档

2011年(1)

2009年(1)

2008年(14)

2007年(37)

2006年(44)

我的朋友

分类: WINDOWS

2007-11-13 10:48:00

1.   切换输入法  
  #include    
  bool   load_ime(   char*   ime_name   )  
  {  
  UINT   cnt;  
  HKL   FAR   *lpKL;  
  char   szImeName[13];  
  HKL   hKLReturn   =   0;  
  cnt   =   GetKeyboardLayoutList(0,   NULL);  
  if   (!cnt)   {  
  /*   error.   */  
  }  
  lpKL   =   (HKL   FAR   *)LocalAlloc(LPTR,   sizeof(HKL)   *   cnt);  
  if   (!lpKL)   {  
  /*   not   enough   memory.   */  
  }  
  cnt   =   GetKeyboardLayoutList(cnt,   lpKL);  
  if   (!cnt)   {  
  /*   error.   */  
  }  
  while   (0   <   cnt)   {  
  cnt--;  
  if   (ImmGetIMEFileName(*(lpKL   +   cnt),  
                          szImeName,   sizeof(szImeName))  
  &&   !lstrcmpi(ime_name,   szImeName))  
  {  
  hKLReturn   =   *(lpKL   +   cnt);  
  break;  
  }  
  // ImmGetIMEFileName(*(lpKL   +   cnt),  
  //                         szImeName,   sizeof(szImeName));  
  // OutputDebugString(   szImeName   );  
  }  
  LocalFree(lpKL);  
  if(   hKLReturn   !=   0   )  
  {  
  ActivateKeyboardLayout(   hKLReturn,   0   );  
  return   true;  
  }  
  else  
  return   false;  
  }  
   
  void   CTestcursorDlg::OnButton1()    
  {  
  load_ime(   "unispim.ime"   );   //   紫光  
  // load_ime(   "PINTLGNT.IME"   );   //   微软拼音  
  }   
   
 
//获取当前输入法名字
function   getimefilename:   string;  
  var  
      szimefilename:   array[0..max_path]   of   char;  
  begin  
      if   immgetimefilename(getkeyboardlayout(0),   szimefilename,   max_path)   <>   0   then  
          result   :=   ansiuppercase(strpas(szimefilename))  
      else  
          result   :=   ;  
  end;  
阅读(1461) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~