本帖最后由 门口 于 2024-9-11 17:19 编辑
搜索了下,总的来说,要在命令行或批处理里实现这个很困难,因为首先检测语言和输入法的状态就很复杂,涉及多个注册表项目,在批处理里解析这个,很难,也没有什么命令能直接解析返回。
然后说切换输入法吧,微软基本也没有直接方法或命令,Powershell能部分实现,但应该仅能调整全局的情况。
而且,这个需求并不很明确,同时目标电脑可能千差万别(系统、软件、输入法设置),恐怕很难最终准确的实现你的需求。
这种,应该还是要编程实现才行,应该没有现成工具吧,以前虽然看到过输入法的一些工具,应该也不适用。
-------------
相关注册表键:- HKEY_CURRENT_USER\Keyboard Layout
- HKEY_CURRENT_USER\Control Panel\International\User Profile
- HKEY_CURRENT_USER\Software\Microsoft\CTF
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP
- \{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}=Microsoft Pinyin,微软拼音
- \{6a498709-e00b-4c45-a018-8f9e4081ae40}{82590C13-F4DD-44f4-BA1D-8667246FDF8E}=Microsoft Wubi,微软五笔
- \{AE51F1C0-807F-4A64-AC55-F2ADF92E2603}{96EC4774-55A1-498B-827F-E95D5445B6C1}=中文 - QQ拼音输入法
复制代码
Powershell命令:- ::当前用户语言列表
- powershell -C Get-WinUserLanguageList
- ::首选(第一位)语言名字
- Powershell -C (Get-WinUserLanguageList)[0].autonym
- ::首选(第一位)语言键盘输入法编码
- Powershell -C (Get-WinUserLanguageList)[0].InputMethodTips
- ::在首选(第一位)语言下添加英文键盘
- Powershell -C "$Lang = Get-WinUserLanguageList;$Lang[0].InputMethodTips.Add('0804:00000409');Set-WinUserLanguageList -LanguageList $Lang -Force"
- Powershell -C "$Lang = Get-WinUserLanguageList;$Lang[0].InputMethodTips.Remove('0804:00000409');Set-WinUserLanguageList -LanguageList $Lang -Force"
- ::在首选(第一位)语言下添加、删除微软拼音---注意:如果是中文语言下最后一个中文输入法是无法删除的,返回false
- Powershell -C "$Lang = Get-WinUserLanguageList;;$Lang[0].InputMethodTips.Add('0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}');Set-WinUserLanguageList -LanguageList $Lang -Force"
- Powershell -C "$Lang = Get-WinUserLanguageList;;$Lang[0].InputMethodTips.Remove('0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411F-A5AC-CA038EC515D7}');Set-WinUserLanguageList -LanguageList $Lang -Force"
- ::在首选(第一位)语言下添加、删除微软五笔
- Powershell -C "$Lang = Get-WinUserLanguageList;;$Lang[0].InputMethodTips.Add('0804:{6a498709-e00b-4c45-a018-8f9e4081ae40}{82590C13-F4DD-44f4-BA1D-8667246FDF8E}');Set-WinUserLanguageList -LanguageList $Lang -Force"
- Powershell -C "$Lang = Get-WinUserLanguageList;;$Lang[0].InputMethodTips.Remove('0804:{6a498709-e00b-4c45-a018-8f9e4081ae40}{82590C13-F4DD-44f4-BA1D-8667246FDF8E}');Set-WinUserLanguageList -LanguageList $Lang -Force"
- ::新建/替换简体中文语言并添加、删除英文键盘:
- Powershell -C "$Lang = New-WinUserLanguageList -Language zh-CN;$Lang[0].InputMethodTips.Add('0804:00000409');Set-WinUserLanguageList -LanguageList $Lang -Force"
- Powershell -C "$Lang = New-WinUserLanguageList -Language zh-CN;$Lang[0].InputMethodTips.Remove('0804:00000409');Set-WinUserLanguageList -LanguageList $Lang -Force"
复制代码
参考资料:
cloud.tencent.com/developer/ask/sof/108267770
computerhope.com/forum/index.php?topic=176756.0
community.spiceworks.com/t/current-keyboard-layout-via-cmd-or-powershell/736931
|