当前位置:编程学习 > C#/ASP.NET >>

再开帖送分,还是输入法问题。

我是在windows2003系统上做的程序,在本机上测试没问题.可是一跑到xp上就老出现问题.

XP系统上的情况是这样的:

打开第一个form的时候,输入法是灰色的不可用,切换之后就正常.打开第二个form的时候,输入法就变成全角了.之后打开的全部都变成全角.

奇怪的时,当我在任务栏右击这个程序时,输入法一般会变回半角.然后在任何已经打开的form之间切换,都不会变成全角.但一打开新的form,就会变成全角,之后所有已打开的form之间切换也都变成全角.比较神奇的地方是,在任务栏右击这个程序弹出菜单时,一般就会变回半角,但偶尔却不变.

--------------------------------------
我已经在一个贴上发问,一般回答是打补丁。
我已经在自己的系统(2003)上打了这个名为ndp20-kb925488-x86的补丁。
但在XP系统上仍然出现问题。

之后我尝试将 ImeMode 设置为 ImeMode.OnHalf; 这样的做法,在有打补丁的系统上可以使用。没有打补丁的系统会出现 ImeMode(12)枚举类型无效的错误。

网络流传的那个解决全角问题的类,我也试过多次,但没有作用。

请各兄弟帮忙 --------------------编程问答-------------------- 沙发! --------------------编程问答-------------------- try
[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);     //转换成半角   
                                  }   
    
                          }   
                  } --------------------编程问答-------------------- 希望的是能给个好的解决方案

因为客户有很多电脑,每台电脑要安装这软件。客户电脑基本都是XP系统。 --------------------编程问答-------------------- 要回帖的请看清楚我的说明
网络上流传的那个解决全角问题的类我已经试过多次,不要再发,因为这样占用页面空间。

要接分的顶一下就行了。
--------------------编程问答-------------------- 把输入法卸载掉 --------------------编程问答-------------------- 英文输入法就没分全角半角了,哈哈 --------------------编程问答-------------------- up --------------------编程问答-------------------- 帮你顶下  本来也想说ImeMode --------------------编程问答-------------------- who cares?
何必把时间放在这些小问题上
--------------------编程问答-------------------- 帮顶下,看高人解答。 --------------------编程问答-------------------- 这是一个专门用来输入文字的软件。经常要打开不同的窗口来输入文字。如果每次打开窗口或者切换窗口都要切换成半角,客户肯定很大意见的。 --------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- 专门帮顶 --------------------编程问答-------------------- 在form_load事件里改变ime_mode状态,同时加上try catch,出现错误就直接空catch跳过。 --------------------编程问答-------------------- VS里中文输入法有时候不太好用,我家的2005也一样,至今没有找到好点的解决办法,所以归究于人品。。。。如果高手们有答案不防告知,感之不尽。。 --------------------编程问答-------------------- 帮你顶``
看样子只能期望微软了`` --------------------编程问答-------------------- 打输入法补丁是很好的方法
--------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 发现就算打补丁之后,在软件启动后,如果输入法为默认的英文输入法,按Ctrl+空格切换到中文时,仍然会出现输入法变灰的情况. 易做图的晕.


另外,我说的是VS2005作出来的软件的问题.VS2005开发环境里面的全角我自己还受得了. --------------------编程问答-------------------- 帮顶
--------------------编程问答-------------------- 顶上去, --------------------编程问答-------------------- 楼主,有一个输入法补丁,试一下吧。 --------------------编程问答-------------------- marising(抹布)  老大,微软有出第二个输入法补丁吗? 在哪里下载?或者叫什么名字,拜托说一声。

XP就算打了补丁,切换的时候如果使用Ctrl + space, 输入易做图变灰不可用。 --------------------编程问答-------------------- 我在vb6.0里用那个类里的ImmGetConversionStatus函数,不起作用,iMode永远是0,-_-!!! --------------------编程问答-------------------- 顶一下
学习了 --------------------编程问答-------------------- up --------------------编程问答-------------------- up --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 我也遇到这样的问题 --------------------编程问答-------------------- 安装了补丁后,发现切换输入法的时候输入法变灰,把ImeMode设为KatakanaHalf,好象可以用。
PS:XP系统,只有个智能输入法。没拿到别的XP上去试。 --------------------编程问答-------------------- 我也想知道,帮顶.         --------------------编程问答-------------------- 哎~一直遇到这个问题。。。有时候真得凭人品。。。哈哈

打了输入法补丁也基本没用。。。

我解决的方法是,用的时候切换到微软拼音,此时在输入法那里会显示一个输入法不可用的红色图标,点一下它就可以打开输入法了,此时再切换到任意输入法都可用了。

--------------------编程问答-------------------- 顶下你~ --------------------编程问答-------------------- 顶一下! 遇到和楼主一样的问题. --------------------编程问答-------------------- 打了那个该死的补丁一样废柴。。。

这个问题很久了。。微软就顾着去出2010了,根本不考虑这种只有中国才会出现的“小问题”~ --------------------编程问答-------------------- .net的bug,网上有解决办法.搜下就醒了,基本就是2L的方法.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,