一个设置默认输入法的小程序

本文介绍如何使用C++设置及删除输入法,并探讨不同框架下输入法的配置方法。文章详细解释了如何通过修改注册表使更改永久生效。

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

用C++写了个设置默认输入法的小程序,E文不好,捣鼓几天才终于弄明白了一些了

首先是删除输入法
使用 UnloadKeyboardLayout 卸载Imm32框架的输入法,只作用于当前,重新启动后无效。ITfInputProcessorProfiles::EnableLanguageProfile启用或者禁用Tsf框架的输入法,重新启动后有效

设置默认输入法
使用SystemParametersInfo加SPI_SETDEFAULTINPUTLANG参数,只作用于当前,重新启动后无效。至于Tsf框架设置默认输入法理论上是ITfInputProcessorProfiles::SetDefaultLanguageProfile,可以经过实践,发现根本无效,不过我源码里面的那种方法可以

显示输入法属性配置
Imm32的使用ImmConfigureIME方法,Tsf的使用ITfFnConfigure::Show来显示属性对话框,具体怎么使用看我源码

如果要想添加、删除或者设置默认输入法重启了还能生效的话,需要修改注册表HKEY_CURRENT_USER\Keyboard Layout\Preload,其中值为1的重启之后总是被设置为默认输入法。
如果你想排序的话修改一下HKEY_CURRENT_USER\Software\Microsoft\CTF\SortOrder,这里包括了Imm32和Tsf框架的所有输入法排序

程序有点模仿了系统的那个,正好复习下属性表的使用
名称:  QQ截图20130407084756.png查看次数: 1文件大小:  29.5 KB

源码使用vs2010编译,程序没有保存到注册表,因此设置的默认输入法只作用于当前系统


示例代码下载:http://bbs.pediy.com/showthread.php?t=167731

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值