那位高手能告诉小弟关于输入法编程的方法,多谢!!!100分

解决方案 »

  1.   

    我也是转载的一篇资料
    常 用 函 数 有: API函数:BOOL ImmSimulateHotKey(HWND hWnd,DWORD dwHotKeyID);//模拟热键其中Hwnd为程序窗口的句柄,dwHotHKeyID为模拟的热键,若成功则返回TrueHKL GetKeyboardLayout(DWORD dwLayout);//获得当前键盘状态
    BOOL ImmIsIME(HKL hKL);//判断当前是否处于中文输入状态,若是则返回True自定义函数:打开相应输入法:OpenIme(imename:string),例OpenIme('全拼输入法');关闭中文输入法:CloseIme;
    以下是一个简单的例子,仅起参考作用。
    使用时uses中加上imm 具体的实现方法及源代码如下: unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,StdCtrls, Buttons,imm;typeTForm1 = class(TForm)ComboBox1: TComboBox;BitBtn1: TBitBtn;BitBtn2: TBitBtn;BitBtn3: TBitBtn;procedure FormShow(Sender: TObject);procedure OpenIme(imename:string);procedure closeIme;procedure ComboBox1Change(Sender: TObject);procedure BitBtn1Click(Sender: TObject);procedure BitBtn2Click(Sender: TObject);procedure BitBtn3Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation
    {$R *.DFM}procedure TForm1.FormShow(Sender: TObject);varj:integer;beginfor j:=0 to screen.imes.count-1 dobeginComBoBox1.Items.Add(screen.Imes.strings[j]);//获取系统中已安装的中文输入法end;end;procedure Tform1.OpenIme(imename:string);
    var
    I:integer;
    myhkl:hkl;
    begin
    if ImeName<>'' then
    begin
    if Screen.Imes.Count<>0 then
    begin
    I:=screen.Imes.indexof(imename);
    if I>=0 then
      myhkl:=hkl(screen.Imes.objects[i]);
      activatekeyboardlayout(myhkl,
      KLF_ACTIVATE);//设置相应的输入法
    end;
    end; 
    end;procedure TForm1.closeime;
    var
    myhkl:hkl;
    begin
      myhkl:=GetKeyBoardLayOut(0);
      if ImmIsIME(myhkl) then 
      //判断是否在中文状态,若是则关闭它
      immsimulateHotkey(handle,
      IME_CHotKey_IME_NonIME_Toggle);
    end;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      OpenIme(ComboBox1.Text);
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      immsimulateHotkey(handle,
      IME_CHotKey_shape_Toggle);//切换半角和全角模式
    end;procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
      immsimulateHotkey(handle,
      IME_CHotKey_symbol_Toggle);
      //切换中文标点模式和英文标点模式
    end;procedure TForm1.BitBtn3Click(Sender: TObject);
    begin
      closeime;
    end;
    end.
      

  2.   

    那么你先去了解一下它的编码方式,
    一个汉字的组成,就如:
    Self.Caption := 对[1] + 'csdn'+极[1]+度[1]+失[1]+望[1]+中[1]
    你只要可以准确的说出它们会出现什么字才有可能去编;