获取当前的输入法状态

本文介绍了通过多种方法获取Windows系统下当前活动窗口的输入法状态及名称的技术细节。包括使用API函数如GetKeyboardLayout结合注册表读取、ImmGetDescription函数直接获取输入法描述等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 调用 GetKeyboardLayout 获取输入法的 HKL后, 在注册表中查找输入法名称(以记事本为例)
hWnd = WinGetHandle("classname=Notepad")

KeyStr=GetKeyboardLayout($hWnd)

KeyName=RegRead("HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layouts/" & $KeyStr, "Layout Text")

2.调用 GetKeyboardLayout 和 ImmGetDescription 这两个函数

3.ImmGetConversionStatus(ImmGetContext(GetForegroundWindow),a,b) 

4.TID   :=   GetWindowThreadProcessID(GetForegroundWindow,@PID); 
  MyHkl   :=   GetKeyBoardLayout(TID);

5.

//获取输入法列表
begin
  Memo1.Lines := Screen.Imes;
end;

   
//获取当前输入法 var   kl: HKL;   i: Integer; begin   kl := GetKeyboardLayout(0);   for i := 0 to Screen.Imes.Count - 1 do     if HKL(Screen.Imes.Objects[i]) = kl then       ShowMessage(Screen.Imes.Strings[i]); {显示当前输入法} end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值