标题:EXE运行时如何关闭中文输入法
只看楼主
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
以下是引用iswith在2023-1-11 19:11:23的发言:



确定win7是失效还是你理解这个功能上有误?


应该是我表述的不准确,我说的是楼主的意思,楼主是想用IMESTATUS()开关输入法,在win10中切换“中”“英”。
2023-01-11 19:19
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:4 
2023-01-11 19:31
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:0 
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)
2023-01-11 19:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用kangss在2023-1-11 18:49:55的发言:

这种方案 api 能实现,也不好用:一旦切换到ENG键盘布局,键盘快捷键切换就失效了。

具体不清楚你要实现什么功能。
“切换输入法”就是用代码自动实现类似手工按键或鼠标点击切换选择输入法的功能。
如果手工切换后也不能满足要求,代码切换结果也一样。
就算删除全部输入法,也总要有个“输入法”,最基本的就是EN输入法,这样也满足不了要求就难搞了。
2023-01-11 19:38
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
楼主说的是 win10。上述办法,在 win10 中是我在 7 楼说的切换“键盘布局”,不仅仅是“切换输入法”:切换到ENG键盘布局,键盘快捷键切换就失效了

2023-01-11 19:39
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
回复 14楼 吹水佬
win10自带的输入法,有“中”“英”2种状态。
装了搜狗输入法之后:
切换搜狗的中英输入状态,win10的“中”“英”状态会改变
切换win10的中英输入状态,搜狗的“中”“英”状态也会改变

我猜测:楼主的意思是想在win10中切换“中”“英”状态

[此贴子已经被作者于2023-1-11 19:41编辑过]

2023-01-11 19:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用kangss在2023-1-11 19:40:03的发言:

我猜测:楼主的意思是想在win10中切换“中”“英”状态

要“中”就LoadKeyboardLayout“中”,要“英”就LoadKeyboardLayout“英”,是吧
2023-01-11 19:49
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2023-1-11 17:36:15的发言:

关闭输入法就无必要吧
可以不要时切换到EN,再要时恢复中文输入法

吹版有所不知,我有个程序是专门用来扫描的,程序运行期间不需要键盘输入任何中文,而有的条码里有字母,此时如果输入法为中文的话则会被拦截(系统认为是在输入汉字),有的人(特别是新人)没注意到输入法的问题,认为是程序出错了。故而想自动切换至英文,避免一些麻烦
2023-01-12 08:14
easyppt
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:119
专家分:169
注 册:2021-11-24
得分:4 
确实,扫码枪 条码输入 确实需要切换到英文模式,我们在工作中,这样的问题带来的麻烦 反复出现,如果能控制确实是好事。

现在 大部分用户都是使用搜狗输入法,如果能代码 控制 搜索输入法中英文 切换,至少可以解决大部分用户的问题,能代码 获取当前程序的 输入法状态 并控制搜狗的输入法吗


[此贴子已经被作者于2023-1-12 08:38编辑过]

2023-01-12 08:34
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
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 ,再点就没有了,等于输入法当前状态看不到了,能否只切换“中”“英”状态?
2023-01-12 09:15



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




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

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