delphi輸入法切換  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

delphi輸入法切換



由於微軟內附的螢幕小鍵盤還真的有點小,加上POS餐飲系統開發需要螢幕小鍵盤,所以乾脆自己寫一個"大"鍵盤。

裡面需要做輸入法的切換,所以分享給大家。

需要Uses到Winapi.imm;

Uses Winapi.Imm;

1取得所有的輸入法名稱

var
   i: integer;
begin
   for i := 0 to screen.imes.count - 1 do
   begin
      ComBoBox1.Items.Add(screen.Imes.strings[i]);
   end;
end;

2切換到輸入法

var
   I: integer;
   myhkl: hkl;
begin
  if ComboBox1.Text <> '' then
  begin
    if Screen.Imes.Count <> 0 then
    begin
      I := screen.Imes.indexof(ComboBox1.Text);
      if I >= 0 then
        myhkl := hkl(screen.Imes.objects[i]);
      activatekeyboardlayout(myhkl, KLF_ACTIVATE);
    end;
  end;
end;

3關閉輸入法

begin
  ImmSimulateHotKey(Handle, IME_THOTKEY_IME_NONIME_TOGGLE);
  ComBobox1.Text := '';
end;

4取得目前輸入法

var
  IMEHandle: THandle;
  Idx: Integer;
  IMEName: String;
begin
  IMEName := '';
  ImeHandle := GetKeyBoardLayOut(0);
  for Idx := 0 to Pred(Screen.Imes.Count) do
    if HKL(Screen.Imes.Objects[Idx]) = ImeHandle then
        IMEName :=Screen.Imes[Idx];
  ShowMessage(IMEName);
end;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.29590582847595 seconds