今天,有个朋友问,如何去实现让一个输入控件,比如Edit中不能输入中文!而且不能让用户切换到任何其他输入法,始终保持为英文输入!群中很多人都说用 ImeCode等来控制,这个控制是没错!但是,本控制无法控制使用的过程中用户自己切换输入法的问题,此时我们应该不让用户去切换输入法!所以最终的实现方式,应该对系统的IME的消息进行拦截来达到目的,在以前做游戏中弹出窗口输入信息时,需要自己模拟输入法的信息,然后在游戏内部窗口中绘制出输入法的相关信息,那时对输入法的控制有研究过几天,而且也基本上实现了对输入法的输出信息进行捕捉和控制等!现在将那个东西开源出来,以便于大家共同探讨提高!例子如下:从图中可以看出,基本上实现了将输入法的信息截获显示在下面的Label控件中,并且有对每个Edit的输入法做相应的控制!
具体代码信息请到本人博客:
http://www.cnblogs.com/DxSoft/archive/2010/03/12/1684797.html
或者
http://blog.csdn.net/suiyunonghen/archive/2010/03/12/5375507.aspx
具体代码信息请到本人博客:
http://www.cnblogs.com/DxSoft/archive/2010/03/12/1684797.html
或者
http://blog.csdn.net/suiyunonghen/archive/2010/03/12/5375507.aspx
是否有研究,delphi中screen對象在vista以上,其ime list的count為0的狀況?
用IMEName也無法控制輸入法的切換。
後來,我們繞過delphi使用Imm32.dll的方式,直接使用.net framework提供的文字服務,包裝為一個dll給delphi程序使用。 不太確定,vista以上的imm32.dll有何變化?
謝謝!
呵呵,还真没研究过呢!我还没在Vista下写过程序,一直用xp系统!具体的,可以跟踪代码跟一下!看看到底是什么原因呢!