怎样打开用户常用的(默认的)输入法(50分)

  • 主题发起人 主题发起人 paulowang
  • 开始时间 开始时间
P

paulowang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样打开用户常用的(默认的)输入法
 
以打开五笔为例:
procedure loadwubi;
var ARegistry : TRegistry;
begin
ARegistry := TRegistry.Create;
with ARegistry do
begin
RootKey:=HKEY_LOCAL_MACHINE;
LoadKeyboardLayout('E0210804', KLF_ACTIVATE);
CloseKey;
Destroy;
end;
end;
注:五笔的相关键值是“E0210804”还是“E0200804”,我记不清了,你可以自己在注册
表中查一查。另外,在uses中加上imm
 
但是五笔不一定是用户默认的输入法阿
如何获取用户默认输入法的信息?
还有,上面那段代码注册表仅仅是打开了一下
没有做什么操作阿
 
一般情况下,默认的输入法是E文。
呵呵,我是凭印象写的代码,打开一个指定的输入法是我两三年前做的事。我再仔细看了
一下,实际上,打开一个指定的输入法只要一个API函数即可,那就是:
LoadKeyboardLayout('E0210804', KLF_ACTIVATE);
根本不需要打开注册表。
你的程序没有打开五笔,看看是不是'E0210804'键不存在,你还可以试着这样写:
LoadKeyboardLayout('E0200804', KLF_ACTIVATE);
LoadKeyboardLayout('E0040804', KLF_ACTIVATE);(智能ABC)


 
不能这样指定输入法
因为不知道用户有些什么输入法
默认的输入法又是哪个

我已经找到答案了
procedure ChangeIME;
var
hklUse: HKL;
begin
hklUse := GetKeyboardLayOut(0);
if not ImmIsIME(hklUse) then
ImmSimulateHotKey(Handle,
IME_THotKey_IME_NonIME_Toggle);
end;

还是谢谢iseek老兄
 
后退
顶部