kisyan 发表于 2010-9-2 06:20:10

求代码,删除系统已安装的输入法,或者让系统已经安装的输入法为不使用

各大输入法的绿色版已经提取,
利用AU3 程序启动配置文件中的EXE文件(输入法绿色安装文件)
询问用户 是否删除系统中已安装的输入法
如果是删除系统中已安装输入法然后将新安装的输入法设置为激活
具体可以参照网维大师 7系列的 输入法功能   

大致功能和网维大师的相同


只是 网维大师7系列的输入法功能必须调用7系列的游戏菜单才能正常使用
由于7系列的游戏菜单不稳定所以希望高手能给出代码    写段模仿 网维大师输入法的程序

3mile 发表于 2010-9-2 10:34:07

#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <array.au3>

Dim $var, $ime, $imee = ""
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("输入法伪删除", 477, 50, 278, 127)
$Label1 = GUICtrlCreateLabel("选择输入法", 10, 25, 64, 20)
$Combo1 = GUICtrlCreateCombo("", 80, 20, 160, 25)
$button3 = GUICtrlCreateButton("删除", 380, 16, 50, 28, 0)

Readreg()

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $button3
                        Local $ime_temp
                        $delime = StringRegExp(GUICtrlRead($Combo1), '=(.+)', 3)
                        If UBound($delime) > 0 Then
                                For $i = 1 To $var
                                        If $var[$i] == $delime Then
                                                RegDelete('HKEY_CURRENT_USER\keyboard layout\preload', $i)
                                        Else
                                                $ime_temp &= $var[$i] & "|"
                                                RegDelete('HKEY_CURRENT_USER\keyboard layout\preload', $i)
                                        EndIf
                                Next
                                $arr = StringSplit(StringTrimRight($ime_temp, 1), "|")
                                For $n = 1 To $arr
                                        RegWrite('HKEY_CURRENT_USER\keyboard layout\preload', $n, 'REG_SZ', $arr[$n])
                                Next
                        EndIf
                        readreg()
                        MsgBox(0, 0, "重新启动后生效")
        EndSwitch
WEnd

Func readreg()
        GUICtrlSetData($Combo1, "")
        $imee = ''
        For $i = 1 To 100
                $var[$i] = RegRead("HKEY_CURRENT_USER\keyboard layout\preload", $i)
                If Not $var[$i] Then
                        $var = $i - 1
                        ExitLoop
                EndIf
        Next
        For $i = 1 To $var
                $ime[$i] = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts\" & $var[$i], "Layout Text")
                If $ime[$i] Then $imee = $imee & $ime[$i] & "=" & $var[$i] & "|"
        Next
        If StringRight($imee, 1) = "|" Then $imee = StringTrimRight($imee, 1)
        GUICtrlSetData($Combo1, $imee, $ime)
EndFunc   ;==>readreg

kisyan 发表于 2010-9-6 20:49:29

回复 2# 3mile


    感谢你的帮助   代码我测试下

kisyan 发表于 2010-9-7 01:33:27

首先还是要感谢下二楼的大大

代码执行后 选择删除某输入法后提示重起后才能生效

代码需要删除所有系统已安装的输入法   只留下EN 输入 和 即将安装的输入法

不知道能不能实现

3mile 发表于 2010-9-7 17:51:44

回复 4# kisyan
能。不重启系统继续删,然后重启

rikthhpgf2005 发表于 2010-9-24 10:45:10

顶,,,好东东

hxming 发表于 2010-10-5 16:01:00

还有注册表键项也需要删除的!

19377708 发表于 2010-10-21 01:38:02

支持下,不错的源码

3131806 发表于 2010-11-1 10:45:01

嘿嘿,顶一个,做个标记,以待不时之需!
页: [1]
查看完整版本: 求代码,删除系统已安装的输入法,或者让系统已经安装的输入法为不使用