我们开发的系统中,不同的用户使用不同的输入法,因此不能在输入控件的IME属性中设定默认输入法。
我想提供一个模块让用户设定自己的默认输入法,系统把该输入法记录下来(记在哪里也请高手指教),在用户每次启动系统时系统自动设定windows的默认输入法为该输入法(怎么设?)。这样用户在输入数据时,系统就自动采用默认输入法了。不知上述方案是否可行,有没有其他更好的方案呢?请大家指教
我想提供一个模块让用户设定自己的默认输入法,系统把该输入法记录下来(记在哪里也请高手指教),在用户每次启动系统时系统自动设定windows的默认输入法为该输入法(怎么设?)。这样用户在输入数据时,系统就自动采用默认输入法了。不知上述方案是否可行,有没有其他更好的方案呢?请大家指教
var
i:integer;
HandleToSet:HKL;
begin
if not SysLocale.FarEast then Exit;
if ImeName<>' ' then
begin
if (AnsiCompareText(ImeName,Screen.DefaultIme)<>0) and (Screen.Imes.Count<>0)
then
begin
HandletoSet:=Screen.DefaultKbLayout;
i:=Screen.Imes.IndexOf(ImeName);
if i>=0 then HandletoSet:=HKL(Screen.Imes.Objects[i]);
ActivateKeyboardLayout(HandleToSet,KLF_ACTIVATE);
end;
end;
end;
procedure ResetMyIme(ImeName:string);
begin
if not SysLocale.FarEast then Exit;
if ImeName<>' ' then
begin
if (AnsiCompareText(ImeName,Screen.DefaultIme)<>0) then
ActivateKeyboardLayout(Screen.DefaultKbLayout,KLF_ACTIVATE);
end;
end;
procedure TForm1.Memo1Click(Sender: TObject);
begin
SetMyIme('微软拼音输入法');
end;在use下面手工添加:IMM
ActivateKeyboardLayout的帮助文件在Windows SDK里面,
procedure TfrmIMENAME.FormCreate(Sender: TObject);
var
j:integer;
path:string;
shurufa:string;
a:integer;
begin
for j:=0 to screen.imes.count-1 do
begin
suibutton1.Enabled:=false;
ComBoBox1.Items.Add(screen.Imes.strings[j]);
//获取系统中已安装的中文输入法
end; Path := ExtractFilePath(Application.Exename);
system_inifile:=Tinifile.Create(path+'tailong.ini');
shurufa:=system_inifile.ReadString('shuru','1','');
DM.imeshurufa:=system_inifile.ReadString('shuru','1',''); for a:=0 to combobox1.Items.Count-1 do
begin
if combobox1.Items.Strings[a]=shurufa then
begin
combobox1.ItemIndex:=a;
exit;
end;
end;
end;procedure TfrmIMENAME.ComboBox1Change(Sender: TObject);
begin
suibutton1.Enabled:=true;
end;procedure TfrmIMENAME.suiButton1Click(Sender: TObject);
begin
system_inifile.WriteString('shuru','1',combobox1.Text);
DM.imeshurufa:=combobox1.Text;
close;
end;