VS2005IDE中输入法全角[控制输入问题]

本文介绍了一个使用 C# 实现的 Windows 表单应用程序,该程序能够在激活窗口时检查并切换输入法的全角/半角状态。通过调用 IMM32.DLL 中的 API 函数实现。
 1using   System;   
 2  using   System.Collections.Generic;   
 3  using   System.ComponentModel;   
 4  using   System.Data;   
 5  using   System.Drawing;   
 6  using   System.Text;   
 7  using   System.Windows.Forms;   
 8  using   System.Runtime.InteropServices;   
 9    
10  namespace   Lqjt   
11  {   
12          public   partial   class   ImeForm   :   Form   
13          {   
14                  public   ImeForm()   
15                  {   
16                          InitializeComponent();   
17                  }
   
18                  //声明一些API函数   
19                  [DllImport("imm32.dll")]   
20                  public   static   extern   IntPtr   ImmGetContext(IntPtr   hwnd);   
21                  [DllImport("imm32.dll")]   
22                  public   static   extern   bool   ImmGetOpenStatus(IntPtr   himc);   
23                  [DllImport("imm32.dll")]   
24                  public   static   extern   bool   ImmSetOpenStatus(IntPtr   himc,   bool   b);   
25                  [DllImport("imm32.dll")]   
26                  public   static   extern   bool   ImmGetConversionStatus(IntPtr   himc,   ref   int   lpdw,   ref   int   lpdw2);   
27                  [DllImport("imm32.dll")]   
28                  public   static   extern   int   ImmSimulateHotKey(IntPtr   hwnd,   int   lngHotkey);   
29                  private   const   int   IME_CMODE_FULLSHAPE   =   0x8;   
30                  private   const   int   IME_CHOTKEY_SHAPE_TOGGLE   =   0x11;   
31                  protected   override   void   OnActivated(EventArgs   e)   
32                  {   
33                          base.OnActivated(e);   
34                          IntPtr   HIme   =   ImmGetContext(this.Handle);   
35                          if   (ImmGetOpenStatus(HIme))     //如果输入法处于打开状态   
36                          {   
37                                  int   iMode   =   0;   
38                                  int   iSentence   =   0;   
39                                  bool   bSuccess   =   ImmGetConversionStatus(HIme,   ref   iMode,   ref   iSentence);     //检索输入法信息   
40                                  if   (bSuccess)   
41                                  {   
42                                          if   ((iMode   &   IME_CMODE_FULLSHAPE)   >   0)       //如果是全角   
43                                                  ImmSimulateHotKey(this.Handle,   IME_CHOTKEY_SHAPE_TOGGLE);     //转换成半角   
44                                  }
   
45    
46                          }
   
47                  }
   
48          }
//form   
49  }

转载于:https://www.cnblogs.com/winnxm/archive/2007/12/10/989506.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值