标题:EXE运行时如何关闭中文输入法
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用laowan001在2023-1-12 09:15:56的发言:

https://bbs.bccn.net/viewthread.php?tid=485814&highlight=%CA%E4%C8%EB%B7%A8
VFP的IMESTATUS()适用XP,之后的windows版本可能不适用。
可以试试用WinAPI切换输入法,如:
DECLARE LONG GetKeyboardLayout IN User32 LONG
DECLARE LONG LoadKeyboardLayout IN User32 STRING@, LONG
DECLARE LONG ActivateKeyboardLayout IN User32 LONG,LONG
hLayout = GetKeyboardLayout(0)
?"切换为En输入法"
LoadKeyboardLayout("0x0409", 1) && KLF_ACTIVATE
?"按一键恢复原输入法"
INKEY(0)
ActivateKeyboardLayout(hLayout, 0)
上面是2018年的帖子,吹版提供的方法,试过了,可以达到目的
有一点不知能否实现,用了上面的方法,第一次右下角键盘位置显示为 ENG ,再点就没有了,等于输入法当前状态看不到了,能否只切换“中”“英”状态?

由于不同的输入法键盘布局不同,输入法切换“中”“英”状态模式也有可能不同。
IME提供的一套状态模式标志只适用于windows系统的输入法,对于第三方输入法要确保兼容就很难说。
要完全适用第三方输入法,也只能按目前版本逐个测试,从而获取状态模式标志,看看有无搞头了。

在win10环境测试用“多多”输入法设计软件创建的五笔输入法,用Shift切换中英状态,IME的状态模式有变化(但不符合原标志含意),但用Ctrl+Space切换中英状态,IME的状态模式没有变化,IME的可靠性有待进一步测试。

话又说回来,既然有得中英切换,程序自动切换后,用户还是有可能无意手动Shift或Ctrl+Space。
2023-01-23 13:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511088-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013219 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved