C#切换输入法代码段

string  languageName = " 五笔 " ; // 查找第一个五笔输入法 
foreach (InputLanguage l  in  InputLanguage.InstalledInputLanguages) 

if (l.LayoutName.IndexOf(languageName) >= 0

InputLanguage.CurrentInputLanguage
= l; 
break

}

 

 

using  System.Runtime.InteropServices;

#region  解决窗口切换输入法变全角的问题

        
// 声明一些API函数
        [DllImport( " imm32.dll " )]
        
internal   static   extern  IntPtr ImmGetContext(IntPtr hwnd);
        [DllImport(
" imm32.dll " )]
        
internal   static   extern   bool  ImmGetOpenStatus(IntPtr himc);
        [DllImport(
" imm32.dll " )]
        
internal   static   extern   bool  ImmSetOpenStatus(IntPtr himc,  bool  b);
        [DllImport(
" imm32.dll " )]
        
internal   static   extern   bool  ImmGetConversionStatus(IntPtr himc,  ref   int  lpdw,  ref   int  lpdw2);
        [DllImport(
" imm32.dll " )]
        
internal   static   extern   int  ImmSimulateHotKey(IntPtr hwnd,  int  lngHotkey);
        
private   const   int  IME_CMODE_FULLSHAPE  =   0x8 ;
        
private   const   int  IME_CHOTKEY_SHAPE_TOGGLE  =   0x11 ;
        
// 重载Form的OnActivated

        
protected   override   void  OnActivated(EventArgs e)
        {
            
base .OnActivated(e);
            IntPtr HIme 
=  ImmGetContext( this .Handle);
            
if  (ImmGetOpenStatus(HIme))   // 如果输入法处于打开状态
            {
                
int  iMode  =   0 ;
                
int  iSentence  =   0 ;
                
bool  bSuccess  =  ImmGetConversionStatus(HIme,  ref  iMode,  ref  iSentence);   // 检索输入法信息
                 if  (bSuccess)
                {
                    
if  ((iMode  &  IME_CMODE_FULLSHAPE)  >   0 )    // 如果是全角
                        ImmSimulateHotKey( this .Handle, IME_CHOTKEY_SHAPE_TOGGLE);   // 转换成半角
                }
            }
        }
#endregion  解决窗口切换输入法变全角的问题 

 

 

转载于:https://www.cnblogs.com/ssda/archive/2010/04/23/1718789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值