| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 5112 人关注过本帖, 1 人收藏
标题:Win10输入法“中”“英”切换源码(2023.01.14 支持第三方输入法)代码在二 ...
取消只看楼主 加入收藏
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用laowan001在2023-1-13 14:11:47的发言:

现在有输入法状态了,但m._IME状态总是0
m._IME状态 = ls_SendMessage(lnHwnd, WM_IME_CONTROL, IMC_GETCONVERSIONMODE, 0)    && m.lcText:任务栏输入指示

试试 2023.01.13 增加多键盘布局模式(2个输入法图标)
2023-01-13 14:19
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2023-1-12 19:15:04的发言:


测试有效,顺便请教:
1. 此函数在其他 windows 版本是否也可用?条件所限,本本只装了 win10,有点懒,不想装虚拟机
2. 其他输入法是否也有效?我只装了搜狗输入法
3. 是否有办法判断全角/半角状态?部分脑残和年纪偏大且被迫使用电脑工作人士,教不会!特别在输入登录密码时,狂抓!


2023.01.13 增加多键盘布局模式(2个输入法图标)

多键盘布局模式,可以设置半角全角
2023-01-13 14:32
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用nbwww在2023-1-13 14:33:27的发言:




用这个版本测试 搜狗五笔 失效      微软拼音成功

单键盘布局模式下:第三方输入法没问题
双键盘布局模式下:第三方输入法,应该还有些BUG。代码只能驱动MS自己的,搜狗等第三放无效


[此贴子已经被作者于2023-1-13 14:52编辑过]

2023-01-13 14:44
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
回复 36楼 nbwww
2022.01.14 支持第三方输入法,代码在二楼。
2023-01-14 12:29
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用laowan001在2023-1-13 15:08:39的发言:

试试 2023.01.13 增加多键盘布局模式(2个输入法图标)

用这个版本测试 搜狗五笔 无效 微软拼音成功

2022.01.14 支持第三方输入法,代码在二楼。
2023-01-14 12:29
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用laowan001在2023-1-13 10:03:12的发言:

测试未成功
环境 win10 VFP9SP2 搜狗五笔输入法
 m._IME状态 = ls_SendMessage(lnHwnd, WM_IME_CONTROL, IMC_GETCONVERSIONMODE, 0)    && m.lcText:任务栏输入指示
 不管是中文还是英文,m._IME状态的值总是0
是输入法的问题吗?
另:屏幕的右下角是没有“中”显示的(不是运行这个程序后变化的,是之前已经不显示了,跟这个有关系吗?)

2022.01.14 支持第三方输入法,代码在二楼。
2023-01-14 12:30
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2023-1-14 12:48:01的发言:


我这是没问题

你的是切换输入法,当切换到ENG键盘布局时,想再按快捷键输入中文可能不太方便了。
我的是切换开关“中”“英”输入法状态。就是输入密码等地方自动切换到“英”,输入品名等需要输入汉字的地方,自动切换到“中”
2个不一样。
2023-01-14 12:59
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用nbwww在2023-1-14 14:30:29的发言:

2022.01.14版  微软拼音   搜狗五笔  ENG  三种测试成功

是2023.01.14,写错了
2023-01-14 15:00
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
回复 45楼 nbwww
是我写错导致的,对2022念念不忘,不知不觉又过了一年
2023-01-14 15:26
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:323
专家分:752
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2023-1-12 20:15:47的发言:

跟踪了一下:
切换到搜狗拼音时,WM_IME_CONTROL, IMC_GETCONVERSIONMODE 消息可正确返回 中(1)/英(0)
切换到微软拼音时,m._IME状态 始终为 0
看来是微软拼音未实现/不响应此消息

又:------------------------------------------------------
楼主代码中常数定义似乎和网上查到不同,我查到的是这样:
    #DEFINE IMC_GETCONVERSIONMODE        0x0001
    #DEFINE IMC_SETCONVERSIONMODE        0x0002
    #DEFINE IMC_GETOPENSTATUS            0x0005
MSDN 上说这些常数在 imm.h 中,但我查了这个头文件,没有,几个以 IMC_ 开头的第一个就到 0x0007 了

我用网上查到的这个常数试了一下: SendMessage(lnHwnd, 0x283, 1, 0)
无论是切换到搜狗还微软拼音,均能正确返回中/英文状态: 0 或 1025,对咱们来说,基本可认为就是 英 or 中,也就是取状态没问题
实际的消息返回值是一个组合值,可用 vfp 的 bittest 函数测试这些位,例如,搜狗输入法
bit0 - 0(英文)1(非英文),bit3 - 是否全角,bit10 - 是否中文标点
至于微软拼音,惭愧,实在不会用,居然不知道如何输入全角符号和英文标点 ,留给受虐狂用吧,咱是不考虑它了。要做成一个用来替代 IMESTATUS(无参数) 的函数,还需验证更多的常用输入法 。。。。

不过,如果试图用 SendMessage(lnHwnd, 0x283, 2, 0/1025) 来设置中英文状态,则微软拼音成功,搜狗失败
也许搜狗已抛弃 IME,只支持 TSF 了

这样一来,剩下的事情就是选取最合适的设置输入法方式了
楼主的模拟鼠标点击方式适用于搜狗输入法,估计稍加修改也可用于大多数流行的输入法
模拟快捷键的方式暂只测试了搜狗和微软拼音,都没问题
咱也不用其他输入法,只知道搜狗是用 shift 切换(很久以前用过的紫光好像也是),其他流行输入法有哪些快捷键就不清楚了


消息模式,需要发送2个“0x0006”“0x0002”,可改变“中”“英”“全角/半角”状态,支持第三方输入法

#DEFINE IMC_SETCONVERSIONMODE        0x0002
#DEFINE IMC_GETSENTENCEMODE            0x0003
#DEFINE IMC_SETSENTENCEMODE            0x0004
#DEFINE IMC_GETOPENSTATUS            0x0005
#DEFINE IMC_SETOPENSTATUS            0x0006
#DEFINE IMC_SETCANDIDATEPOS            0x0008
#DEFINE IMC_SETCOMPOSITIONFONT        0x000A
#DEFINE IMC_SETSTATUSWINDOWPOS        0x0010
#DEFINE IMC_SETCOMPOSITIONWINDOW    0x000C
#DEFINE IMC_GETSTATUSWINDOWPOS        0x000F
#DEFINE IMC_OPENSTATUSWINDOW        0x0022

SendMessage(lnHwnd, WM_IME_CONTROL, IMC_SETOPENSTATUS, 0/1025)
SendMessage(lnHwnd, WM_IME_CONTROL, IMC_SETCONVERSIONMODE, 0/1025)

2023-01-14 16:57
快速回复:Win10输入法“中”“英”切换源码(2023.01.14 支持第三方输入法)代码 ...
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019599 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved