标题:EXE运行时如何关闭中文输入法
只看楼主
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
结帖率:100%
已结贴  问题点数:20 回复次数:40 
EXE运行时如何关闭中文输入法
执行编译后的exe时,一启动程序,系统就自动切换到中文输入法,手动关闭可以,但在程序中关闭不起作用,不知是何原因,请高手指教
尝试方法:
text.gotfocus里 IMESTATUS(0)或this.imemode=2 均试过,无效

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

环境VFP9 SP2 WIN10

搜索过坛子里的相关帖子,方法试过无效,不知是哪里的原因
搜索更多相关主题的帖子: 中文 运行 输入法 EXE 关闭 
2023-01-11 11:14
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:4 
1、IMESTATUS() 在win7中已经失效了
2、win10的输入法控制方案又发生了变化
目前怎么在win10中控制改变输入法状态,还不清楚
2023-01-11 14:31
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 2楼 kangss
感谢回复,看来还需要等高人出手解决一下了
2023-01-11 15:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
关闭输入法就无必要吧
可以不要时切换到EN,再要时恢复中文输入法
2023-01-11 17:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
IME架构XP后好象就废了,后用的是TSF架构。
2023-01-11 17:44
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
折腾半天,做了“废品”,因为状态一直获取不到。
模拟鼠标点击输入法切换“中”“英”状态。高手再想办法获取到“中”“英”状态就能用了

这个办法只适合反人类设计的win10输入法。xp、win7没必要这么麻烦

DECLARE INTEGER FindWindow IN user32 STRING,STRING
DECLARE INTEGER FindWindowEx IN user32 INTEGER,INTEGER,STRING,STRING

lnHwnd1=FindWindow("Shell_TrayWnd",0)
lnHwnd2=FindWindowEx(lnHwnd1,0,"TrayNotifyWnd",NULL)
lnHwnd3=FindWindowEx(lnHwnd2,0,"TrayInputIndicatorWClass",NULL)
lnHwnd4=FindWindowEx(lnHwnd3,0,"IMEModeButton",NULL)

#DEFINE WM_MOUSEMOVE             0x0200
#DEFINE WM_NCLBUTTONDOWN        0x00A1
WM_LBUTTONDOWN = 0x0201
WM_LBUTTONUP = 0x0202
MK_LBUTTON = 0x0001
WM_GETTEXT = 0x000D

DECLARE INTEGER PostMessage IN user32 INTEGER,INTEGER,INTEGER,INTEGER
PostMessage (lnHwnd4,WM_LBUTTONDOWN,MK_LBUTTON ,1)      && 按下左键
PostMessage (lnHwnd4,WM_LBUTTONUP,MK_LBUTTON ,1)        && 放开左键


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

2023-01-11 18:44
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
回复 4楼 吹水佬
这种方案 api 能实现,也不好用:一旦切换到ENG键盘布局,键盘快捷键切换就失效了。
2023-01-11 18:49
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
获取“中”“英”状态的垃圾办法:根据 lnHwnd4 获取窗口大小,屏幕截图,根据截图可以判断
垃圾办法不适合应用
2023-01-11 18:57
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
C# TSF 输入法的获取
https://blog.
2023-01-11 19:02
iswith
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:154
专家分:101
注 册:2013-5-14
得分:4 
以下是引用kangss在2023-1-11 14:31:54的发言:

1、IMESTATUS() 在win7中已经失效了
2、win10的输入法控制方案又发生了变化
目前怎么在win10中控制改变输入法状态,还不清楚


确定win7是失效还是你理解这个功能上有误?
2023-01-11 19:11



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




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

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