标题:Win10输入法“中”“英”切换源码(2023.01.14 支持第三方输入法)代码在二 ...
只看楼主
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册: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
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:0 
以下是引用kangss在2023-1-13 14:19:07的发言:


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



用这个版本测试 搜狗五笔 失效      微软拼音成功
2023-01-13 14:33
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
以下是引用nbwww在2023-1-13 14:33:27的发言:




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

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


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

2023-01-13 14:44
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
试试 2023.01.13 增加多键盘布局模式(2个输入法图标)


用这个版本测试 搜狗五笔 无效 微软拼音成功
2023-01-13 15:08
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:20 
装了几种流行的输入法测试,基本可以说,用这些 IMC_* 消息非常的不靠谱!
我测试的结果是:搜狗、QQ、微软 的输入法,用下面代码判断【中/英】文输入状态没问题
程序代码:
Declare Long ImmGetDefaultIMEWnd in Imm32 Long
Declare Long SendMessage in win32api Long, long, long, long
m.hWnd = ImmGetDefaultIMEWnd(Application.hWnd)
m.nStatus = SendMessage(m.hWnd, 0x283, 1, 0)
? Bittest(status, 0)

但是,如果是其他流行的输入法,像极点五笔、万能五笔等便完全失效。准确判断都做不到,用什么方法切换输入状态也就不用考虑了。

所以,感觉还是用切换中英文 KeyboardLayout 可靠点
程序代码:
? '关闭输入法'
IMEstatus2(0)
Wait '按任意键切换回中文输入法 ...'
IMEstatus2(1)

Function IMEstatus2(onoff)
    If Pcount() < 1
        Return .f.
    EndIf
    m.onoff = Cast(m.onoff as I)
    If m.onoff == 0
        Declare Long LoadKeyboardLayout in win32api String, Long
        LoadKeyboardLayout('00000409', 1)
    Else
#IF .F.        && 两种方法都行
        Declare Long LoadKeyboardLayout in win32api String, Long
        LoadKeyboardLayout('00000804', 1)
#ELSE        && 我选择卸载 ENG
        Declare Long UnloadKeyboardLayout in win32api Long
        UnloadKeyboardLayout(0x00000409)
#ENDIF
    EndIf
EndFunc
2023-01-13 23:46
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:0 
以下是引用csyx在2023-1-13 23:46:56的发言:

装了几种流行的输入法测试,基本可以说,用这些 IMC_* 消息非常的不靠谱!
我测试的结果是:搜狗、QQ、微软 的输入法,用下面代码判断【中/英】文输入状态没问题
Declare Long ImmGetDefaultIMEWnd in Imm32 Long
Declare Long SendMessage in win32api Long, long, long, long
m.hWnd = ImmGetDefaultIMEWnd(Application.hWnd)
m.nStatus = SendMessage(m.hWnd, 0x283, 1, 0)
? Bittest(status, 0)
但是,如果是其他流行的输入法,像极点五笔、万能五笔等便完全失效。准确判断都做不到,用什么方法切换输入状态也就不用考虑了。

所以,感觉还是用切换中英文 KeyboardLayout 可靠点
? '关闭输入法'
IMEstatus2(0)
Wait '按任意键切换回中文输入法 ...'
IMEstatus2(1)

Function IMEstatus2(onoff)
    If Pcount() < 1
        Return .f.
    EndIf
    m.onoff = Cast(m.onoff as I)
    If m.onoff == 0
        Declare Long LoadKeyboardLayout in win32api String, Long
        LoadKeyboardLayout('00000409', 1)
    Else
#IF .F.        && 两种方法都行
        Declare Long LoadKeyboardLayout in win32api String, Long
        LoadKeyboardLayout('00000804', 1)
#ELSE        && 我选择卸载 ENG
        Declare Long UnloadKeyboardLayout in win32api Long
        UnloadKeyboardLayout(0x00000409)
#ENDIF
    EndIf
EndFunc

如果安装了ENG键盘的话切不回中文输入法,可以切到英文
2023-01-14 11:24
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
回复 36楼 nbwww
2022.01.14 支持第三方输入法,代码在二楼。
2023-01-14 12:29
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册: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: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册: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
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
以下是引用nbwww在2023-1-14 11:24:53的发言:
如果安装了ENG键盘的话切不回中文输入法,可以切到英文

我这是没问题
QQ录屏20230114121712.rar (914.26 KB)
2023-01-14 12:48



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




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

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