输入法的顺序在注册表以下位置:
清除和重新编排语言栏中输入法(假设有7种输入法)的REG文件:
Windows Registry Editor Version 5.00
;先清空原序列,00000804代表“中文(中国)”
"1"="00000804"
"2"=-
"3"=-
"4"=-
"5"=-
"6"=-
"7"=-
"8"=-
;以下为重新排列(只取其中的4种):
;依次为:中文(中国)、极点五笔4、搜狗拼音、全拼、智能ABC
"1"="00000804"
"2"="e0210804"
"3"="e0200804"
"4"="e0010804"
"5"="e0040804"
以上的序号对应语言栏中上至下的顺序,做好以上REG文件,双击导入或用命令 regedit /s XXX.reg 自动导入即可。各种输入法对应在注册表中的代码如下:
00000804 中文(中国)
00000409 英文
e0100804 王码五笔86
e0220804 念青五笔
e0210804 极点五笔
e00e0804 微软拼音
e0010804 全拼
e0020804 双拼
e0040804 智能ABC
e0200804 搜狗拼音
e0xx0804 紫光拼音
e0050804 区位码
e00c0804 表形码
e0030804 郑码
实质上以上这些代码并没有明文规定(在Win中自带的除外,如:英文、微软拼音、全拼等等),如果想获取真正的代码,可以用
reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload">a.txt 命令获取输入法顺序列表,然后对应语言栏中上至下的顺序,就可以获取在你系统在各输入法对应在注册表中的代码(输入法ID)。
如果用楼下 yishanju 兄提供的工具,则只需用一条命令(命令必须在 imetool 同一目录下执行):
imetool /del4:e0010804
即可从语言栏中删除“全拼”输入法,而且不需重启即生效。
既然有人关注此主题,再补上本人做的一个删除语言栏上的输入法的批处理:
以序号形式删除输入法:
@echo off&setlocal enabledelayedexpansion
set key1=HKCU\Keyboard Layout\Preload
set key2=HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
:begin
cls
for /f "tokens=1-4" %%a in ('reg query "%key1%"^|findstr "REG_SZ"^|sort') do (
for /f "tokens=1,3*" %%d in ('reg query "%key2%\%%c"^|findstr "Text"') do (
set /a n+=1
echo %%a %%c %%f
)
)
echo.
set /p num=请输入你想删除的输入法前的序号:
for /l %%a in (%n% -1 1) do (
if "%%a"=="%num%" set var=A
)
if "%var%"=="A" goto delime
cls
echo 输入错误,请按任意键重新输入一个序号!
pause>nul
goto begin
:delime
cls
echo 操作中,请稍等...
(reg export "%key1%" 恢复原来设置.reg
reg delete "%key1%" /f /v "%num%"
for /f "tokens=1,2*" %%i in ('reg query "%key1%"^|findstr "REG_SZ"') do (
set /a m+=1
reg add "!key1!" /f /v !m! /d "%%k"
))>nul
cls
echo 输入法删除成功!余下的输入法(注销或重启后生效):
echo.
for /f "tokens=1-4" %%a in ('reg query "%key1%"^|findstr "REG_SZ"^|sort') do (
for /f "tokens=1,3*" %%d in ('reg query "%key2%\%%c"^|findstr "Text"') do (
echo %%a %%c %%f
)
)
ping 127.1 -n ^6>nul
以输入法ID形式删除输入法:
@echo off
set "b="
set "ime=e0010804"
for /f "tokens=1" %%a in ('reg query "HKCU\Keyboard Layout\Preload"^|find /i "%ime%"') do set "b=%%a"
if not "%b%"=="" (reg delete "HKCU\Keyboard Layout\Preload" /f /v "%b%" >nul
) else (
echo 没有发现ID为“%ime%”的输入法!&&ping 0 /n ^5>nul&exit)
for /f "tokens=1,2*" %%c in ('reg query "HKCU\Keyboard Layout\Preload"^|find "REG_SZ"') do (
set /a n+=1
call reg add "HKCU\Keyboard Layout\Preload" /f /v "%%n%%" /t REG_SZ /d "%%e" >nul
)
echo 成功删除代码为“%ime%”的输入法! 注销或重启后才生效。&&ping 0 /n ^5>nul&exit
Last edited by newxso on 2009-8-12 at 20:33 ]
谢谢,我正在找.