| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2561 人关注过本帖
标题:EXE运行时如何关闭中文输入法
取消只看楼主 加入收藏
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
EXE运行时如何关闭中文输入法
执行编译后的exe时,一启动程序,系统就自动切换到中文输入法,手动关闭可以,但在程序中关闭不起作用,不知是何原因,请高手指教
尝试方法:
text.gotfocus里 IMESTATUS(0)或this.imemode=2 均试过,无效

而且,在开发环境中的命令窗口输入IMESTATUS(0)也不起作用

环境VFP9 SP2 WIN10

搜索过坛子里的相关帖子,方法试过无效,不知是哪里的原因
搜索更多相关主题的帖子: 中文 运行 输入法 EXE 关闭 
2023-01-11 11:14
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
收藏
得分:0 
回复 2楼 kangss
感谢回复,看来还需要等高人出手解决一下了
2023-01-11 15:40
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
收藏
得分:0 
以下是引用吹水佬在2023-1-11 17:36:15的发言:

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

吹版有所不知,我有个程序是专门用来扫描的,程序运行期间不需要键盘输入任何中文,而有的条码里有字母,此时如果输入法为中文的话则会被拦截(系统认为是在输入汉字),有的人(特别是新人)没注意到输入法的问题,认为是程序出错了。故而想自动切换至英文,避免一些麻烦
2023-01-12 08:14
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册: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
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
收藏
得分:0 
有可能模拟发送一个按键 <Shift> 吗?
2023-01-12 09:33
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
收藏
得分:0 
回复 22楼 吹水佬
程序代码:
DECLARE LONG GetKeyboardLayout IN User32 LONG
DECLARE LONG LoadKeyboardLayout IN User32 STRING@, LONG
DECLARE LONG ActivateKeyboardLayout IN User32 LONG,LONG
hLayout = GetKeyboardLayout(0)

LoadKeyboardLayout("0x0409", 1) && KLF_ACTIVATE


上面是我在form.Activate时执行的

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

2023-01-12 10:44
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
收藏
得分:0 
回复 24楼 kangss
感谢感谢,我试试
2023-01-12 11:04
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1076
专家分:2628
注 册:2015-12-30
收藏
得分:0 
回复 33楼 kangss
谢谢
2023-01-17 17:57
快速回复:EXE运行时如何关闭中文输入法
数据加载中...
 
   



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

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