http://www.cnblogs.com/371448009/archive/2009/03/21/1418541.html
首先打补丁,然后在winform的imeMode = onHalf。如果不打补丁,会提示这个枚举不存在。
http://www.cnblogs.com/forrestsun/articles/810739.html
http://www.cnblogs.com/name-lh/archive/2006/04/13/374337.html
using System;
2using System.Runtime.InteropServices;
3
4namespace MyDemo
5{
6 public static class clsIme
7 {
8 //声明一些API函数
9 [DllImport("imm32.dll")]
10 public static extern IntPtr ImmGetContext(IntPtr hwnd);
11 [DllImport("imm32.dll")]
12 public static extern bool ImmGetOpenStatus(IntPtr himc);
13 [DllImport("imm32.dll")]
14 public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
15 [DllImport("imm32.dll")]
16 public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);
17 [DllImport("imm32.dll")]
18 public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
19 public const int IME_CMODE_FULLSHAPE = 0x8;
20 public const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
21 //重载SetIme,传入Form
22 public static void SetIme(Form frm)
23 {
24 frm.Paint += new PaintEventHandler(frm_Paint);
25 ChangeAllControl(frm);
26 }
27 //重载SetIme,传入Control
28 public static void SetIme(Control ctl)
29 {
30 ChangeAllControl(ctl);
31 }
32 //重载SetIme,传入对象句柄
33 public static void SetIme(IntPtr Handel)
34 {
35 ChangeControlIme(Handel);