程序在切换输入法时要么输入法布能用,要么输入法都为全角,请问该怎么设置啊, Winform的程序

解决方案 »

  1.   

    安装KB925488补丁
    也可转化
      [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);        
                    } 
     
                }
            }
    参考
      

  2.   

    VS2005的bug,拼音加加没问题,非拼音输入法没问题。
      

  3.   

    感觉是MS的bug,我有时候要两次才能切换到输入法。
    帮楼主顶一下。
      

  4.   


    是 ms 的 bug
      

  5.   

    这个事微软的一个BUG,有相关的补丁,但是感觉也不是很好用,最好是转化加补丁