我想通过做一个函数来自动加载系统输入法,再通过设置,避免用户使用软件时,频频转换输入法

解决方案 »

  1.   

    那你还不如将imemode的属性设置成你要的输入法来的方便!
      

  2.   

    HKEY_CURRENT_USER\keyboard layout\preload
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layouts
    你会发现规律的:)
      

  3.   

    设置imemode属性为中文输入法就行了
      

  4.   

    Screen.Fonts属性里保存的就是系统的字体,至于怎么添加,不用我说了八
      

  5.   

    combobox1.items:=Screen.imes;
    然后设个全局变量保存用户选择的输入法,在要输入中文的地方imename都用变量来赋值,就可以避免用户使用软件时,频频转换输入法。
      

  6.   

    参考一下我的,你可以更灵活地调用输入法:
    var
      Form1: TForm1;
      ImmHkl:array[0..20] of HKL;
      ImmName:array[0..50] of Char;
    implementation
    {$R *.DFM}
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i:Integer;
    begin
      for i:=0 to GetKeyboardLayoutList(sizeof(ImmHkl),ImmHkl)-1 do
      begin
        if ImmIsIME(ImmHkl[i]) then
        begin
          ImmGetDescription(ImmHkl[i],ImmName,sizeof(ImmName));
          ComboBox1.Items.Add(ImmName);
        end
        else
          ComboBox1.Items.Add('English');
      end;
    end;procedure TForm1.ComboBox1Click(Sender: TObject);
    begin
      ActivateKeyboardLayout(ImmHkl[ComboBox1.ItemIndex],0);
      GetKeyboardLayoutName(ImmName);
      LoadKeyboardLayout(ImmName,KLF_ACTIVATE);
      Memo1.SetFocus;
    end;
    end.