一.控件输入法全角/半角解决方案 直接把控件的imemode = imdemode.kankanhalf,强制转化成半角就OK。
二.窗体输入法全角/半角解决方案 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Lqjt { public partial class ImeForm : Form { public ImeForm() { InitializeComponent(); } //声明一些API函数 [DllImport("imm32.dll")] public static extern IntPtr ImmGetContext(IntPtr hwnd); [DllImport("imm32.dll")] public static extern bool ImmGetOpenStatus(IntPtr himc); [DllImport("imm32.dll")] public static extern bool ImmSetOpenStatus(IntPtr himc, bool b); [DllImport("imm32.dll")] public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2); [DllImport("imm32.dll")] public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey); private const int IME_CMODE_FULLSHAPE = 0x8; private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11; 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); //转换成半角 } } } }//form }
