【解决Windows XP不能切换输入法问题】

Windows XP中,经常会出现一些小问题,比如输入法图标也会莫名其妙地丢失,但在控制面板中却没有“输入法”,输入法无法转换,输入法图标不见了,这是什么原因呢,主要是因为ctfmon.exe文件被病毒破坏了, 解决Windows XP不能切换输入法问题 ,这时可以按以下方法尝试:

  输入法不能切换解决方法1:在任务栏单击鼠标右键,弹出快捷菜单,把鼠标移动到“工具栏”上,会弹出子菜单,看看其中的“语言栏”有没有被选中,如果没有选中,单击选中“语言栏”,一般会显示输入法图标。也可以先运行ctfmon.exe,也行你就能看到你的输入法图标了!

  输入法不能切换解决方法2:依次单击“开始→设置→控制面板”,打开控制面板,在控制面板中单击“日期、时间、语言和区域设置”,单击“语言和区域设置”,弹出“语言和区域设置”对话框,单击“语言”标签,在“文字服务和输入语言”下单击“详细信息”按钮,弹出“文字服务和输入语言”对话框,单击“高级”标签,在“系统配置”下,把“关闭高级文字服务”前面的对号取消(看到下面的注释了没有,选中“会关闭语言栏”),单击“确定”按钮,输入法图标就回来了。

  输入法不能切换解决方法3:点“开始→运行”,键入“msconfig”,单击“确定”或回车,运行“系统配置实用程序”,在“启动”里把“Ctfmon.exe”选中,单击“确定”,然后注销或重新启动应该就可以了。这是因为 Ctfmon.exe控制Alternative User Input Text Processor (TIP)和Microsoft Office语言条,提供语音识别、手写识别、键盘、翻译和其它用户输入技术的支持。这个程序没有启动也会造成输入法图标不显示。

  最后提示一下,没有输入法图标,用快捷键一样可以操作输入法。Ctrl+Space(空格键)是在中、英文输入法之间切换;按Ctrl+Shift组合键可以依次显示系统安装的输入法。

  别看输入法是个小问题,有时候就算这种小问题也是很让人头疼的,所以希望大家平时多积累些经验了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IMETool 已经推出有几年了,因为我一向比较懒,没有写过必要的说明,至今有许多朋友不能正确使用它功能(看起来是我设计得比较烂,让人看不明白 )。下面我就几个常见问题做些说明。 1、问:Windows 系统本身就自带输入法管理功能,要 IMETool 何用? 答: ⑴系统自带输入法管理功能无法调整各输入法顺序,而 IMETool 可以实时调整。 ⑵系统自带输入法管理功能只能设置 Ctrl + Alt + 1 之类有限的热键,且有时无法恢复初始设置,删除输入法无法自动将其热键一并删除。IMETool 大大突破了热键设置局限性,可以实现 1092 种不同的热键组合。这是 IMETool 独一无二的功能。 ⑶系统自带输入法管理功能没有从注册表删除输入法功能。 ⑷另外 IMETool 还支持丰富的命令行参数和脚本,可以通过命令行完成图形界面中的所有功能,非常灵活方便。 2、问:启动系统后总是会默认打开某一输入法,如何才能将其关闭? 答:在 IMETool 的输入法列表中,处在第一位的输入法即为默认输入法。如图一中①处,将“中文 (简体) – 美式键盘”设在第一位,系统启动时就不会再自动打开某输入法了。 3、问:如何才能用一个热键(如 Ctrl + 空格)快速地打开/关闭我最常用的输入法? 答:大家知道,默认的打开/关闭输入法热键是“Ctrl + 空格”,它其实就是来回切换位于输入法列表中前两位的输入法。所以只须将最常用的输入法排在列表中第二位即可,比如我最常用极点五笔输入法,就将其放在图一中②处。 4、问:如何快速打开某输入法的属性或热键对话框? 答:在输入法列表“名称”一列上双击,即可快速打开输入法属性设置对话框;即热键一列双击则打开热键设置对话框。 5、问:“键盘”按钮有何作用? 答:此功能极少用到。一些中文输入法在安装后使用系统默认的英文键盘定义,对于使用其它国别键盘的用户,会产生键位错误的情况。此时可使用 IMETool 的键盘布局重定义功能将其设置为正确的国别即可。注意:在点击“键盘”按钮打开的对话框中选择“确定”后,会立即修改注册表中的相应项目,请谨慎使用。 6、问:输入法风格中的“输入法指示器”和“高级文字服务”有什么区别? 答:在 Office XP 未出现之前,Win 9X 和 Windows 2000 中一直使用输入法指示器(internat.exe),即在任务栏系统托盘区中显示输入法列表的蓝色 En 或 CH 图标(不同配色方案下图标颜色可能不同)。 从 Office XP 开始,微软使用高级文字服务(ctfmon.exe)来代替输入法指示器,其特点是其输入法列表可在屏幕上任意移动,并可缩小至任务栏(但不在系统托盘区)。在 Windows XP/2003 系统中已经用高级文字服务完全取代了输入法指示器,所以要想使用输入法指示器,只能从 Windows 2000 系统中复制出 Internat.exe 和 indicdll.dll(前者必须的库文件)来使用。 7、问:调整输入法顺序为何有时不起作用? 答:此功能主要适用于使用输入法指示器的情况,在高级文字服务模式下,系统往往会记住你上次使用的输入法,并动态调整。另外在 Win95/NT 系统下,调整顺序需要重启系统方可生效。 8、问:使用 IMETool 进行一些设置后,默认的 Ctrl + Shift 切换输入法热键不能用了? 答:这是反映最多的一个问题,在此详细说明一下。 在高级文字服务模式下(ctfmon.exe),有“切换输入语言”和“切换键盘布局”两种热键,两者的热键必须为Ctrl + Shift 和 Alt + Shift 中的一个,即如果前者的热键是 Ctrl + Shift,后者的热键就必须是 Alt + Shift,其设置保存在注册表中。“切换输入语言”是指即在安装的不同语言间切换,如中文(中国)、美国英语等。“切换键盘布局”是指切换不同的输入法。 而在输入法指示器模式下(internat.exe),只有切换输入法这一种功能,而其从注册表读取的热键配置正好是高级文字服务模式下的“切换输入语言”的配置。由此可知,同样的注册表配置,高级文字服务和输入法指示器两种模式下切换输入法的热键正好是 相反的。 所以这个问题并不是 Ctrl + Shift 热键不能用了,而是默认变成了 Alt + Shift,可在设置中改回。 注:在 2.6.5 版本中,已经解决了这个问题,无须再手工切换。 9、问:在使用 IMETool 后,有时输入法的指示条会消失。 答:在 IMETool 的其它设置中,有一个打开/关闭输入法指示条的选项,是调用了一个 API 函数来实现的。不知何故,其只对当前打开的输入法有效,对其它输入法可能会起到相反的作用,不过在系统重启后会恢复正常。此问题有待于以后研究解决。 建议:在使用 IMETool 之前,关闭所有打开的输入法,因为已运行的不同程序下可能会打开不同的输入法,所以要逐个关闭。 10、问:IMETool 的修复功能有哪些,为何在界面中找不到? 答:IMETool 可以修复一些常见的输入法混乱情况:如: ⑴某输入法已经卸载,但仍在输入法列表中残留了条目。 ⑵某输入法已经卸载,但其先前设置的热键并没有取消。 ⑶高级文字服务模式下,将输入法列表条最小化后,任务栏上不出现语言栏。 ⑷2000/XP 提示“检测到不兼容的键盘驱动程序。该对话框已被停用。”,并且无法通过控制面板添加删除输入法。 以上修复过程完全是自动进行的,不需要人工干预,故没有在界面中设计。 11、问:软件包里附带的 internat.exe 和 indicdll.dll 文件有何作用? 答:这两个文件是从Windows 2000 简体中文专业版中提取的,并做过一些修改。Windows XP/2003 若想使用“输入法指示器”风格工作时需要将这两个文件复制到系统文件夹下使用。建议将 imetool.exe 文件也复制到系统文件夹下,这样就可以从输入法指示器右键属性中直接调用 IMETool 了。 12、问:如何卸载 IMETool? 答:IMETool 只有一个主文件,无须安装,自然也无须卸载,直接删除即可。 13、问:一些杀毒软件报 imetool.exe 为“病毒”。 答:IMETool 使用 upx 压缩过,一些比较敏感的杀毒软件会报其为加壳程序(注意不是报病毒!),从 2.8.1 版开始,不再使用 upx 压缩主程序。 Silence 2009.8.14
声明:IMETool 为免费软件,非商业使用无须授权,但不得对软件本身做任何修改。允许个人开发的免费输入法软件将其加入安装包使用,但安装包内不得包含有广告插件或流氓软件。 IME TOOL 支持中英文界面,适用于 Win98/ME/2000/XP/2003 操作系统,部分兼容 Windows 7。 主要功能: 一、动态调整输入法顺序而无须重启。 二、切换输入法指示器和高级文字服务方式。 三、任意设置输入法热键 Windows 本身的输入法热键设置功能限制很多,2000/XP 下更是如此,你不得不设置 ctrl+shift+3 这样的三键热键。IME Tool 让你可以自由地设置各种热键,基本键(ctrl、alt、shift)共有六种组合,辅助键有 91 个可选,如用左 Alt+左 Window 键激活龙文五笔,shift+down 激活紫光拼音。当然,有些热键组合是不能用的,如 shift+数字字母键。 四、注册表错误项目修正 1、自动删除输入法列表中不存在的输入法项目,位置: HKEY_CURRENT_USER\Keyboard Layout\preload 2、检查注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts 下的内容,如果某分支对应的输入法文件不存在,则删除此分支(需要管理员权限)。 3、自动删除输入法从列表中删除后可能遗留的激活热键设置,位置: HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys 五、输入法键盘定义功能,适用于非英文键盘(需要管理员权限)。 六、安装删除输入法 IME TOOL 可以安装标准格式的输入法。自行复制 ime 和 mb 文件到系统目录中,然后使用 imetool 的安装输入法功能指定输入法名称和 ime 文件即可。 IME TOOL 可以从注册表中删除不需要的输入法,但并不删除文件。 七、其它功能 打开输入法属性、打开关闭输入法状态条等。支持命令行参数,支持运行脚本。 另外修正了老版本存在的一些小 bug。 局限: 1、在 Win9x 下设置的输入法热键不能立即生效,必须重启。在 Win95/NT 系统下有更多的功能限制。 注意: 1、用 IME Tool 设置的一些热键在 Windows 本身的输入法设置中会无法正确显示,但不影响使用。 2、繁体、韩文、日文系统下的打开关闭输入法切换键设置在注册表中的位置不同,因条件所限我没有做进一步测试功能是否有效。 3、在 IME Tool 中刚添加的输入法不能立即设置属性。 4、如果使用输入法指示器方式时,在系统目录下未发现 internat.exe 和 indicdll.dll 文件,将会自动复制当前目录下的此二文件过去(如果存在)。 命令行参数说明: /? /h /help 显示此帮助 /on 启用 internat.exe 或 ctfmon.exe /off 禁用 internat.exe 或 ctfmon.exe /internat 输入法指示器风格 /ctfmon 高级文字服务风格 /status: : 关闭输入法状态条,: 显示输入法状态条 /caps 用 Caps 键关闭大写 /shift 用 Shift 键关闭大写 /switch: : 不使用切换语言和切换键盘布局热键 : 仅使用切换语言热键 : 仅使用切换键盘布局热键 : 同时使用切换语言和切换键盘布局热键 : 切换语言热键使用Ctrl+Shift : 切换键盘布局热键使用Ctrl+Shift /hotkey:,[hotkey] 指定输入法热键 ,指定第1、2、3.. 个输入法的热键 指定打开/关闭输入法的热键 指定全角/半角切换的热键 指定中英文标点切换的热键 如果留空则删除热键 [hotkey] 热键值,如:ctrl+space /add1:,[hotkey] 按名称添加输入法到列表 /add2:,[hotkey] 按文件名添加输入法到列表 /add3:,[hotkey] 按 ID 添加输入法到列表 /del1: 按顺序从列表中删除输入法 /del2: 按名称从列表中删除输入法 /del3:<filen
Ring3下注入DLL的另类方法,能过杀软和游戏NP(源码) 注入DLL是做全局钩子或者拦截类软件都有可能用到的技术,如果做外挂的话我们也有 可能需要注入一个DLL到游戏进程中去干点什么“坏事”。 但我们知道现在要注入DLL是越 来越难了。场景1:制作火星文输入法外挂,原理是利用API HOOK拦截并修改输入法相关函 数,需要注入一个DLL到所有进程中,但是后来发现,在开启了瑞星的帐号保险箱后,用户 将不能在QQ中输入火星文。原因是瑞星保护了QQ进程,禁止对其注入DLL,解决方法是提示 用户关闭帐号保险箱 -_-| 确实是很降低用户体验的一个不是办法的办法。场景2:制作某 游戏外挂,需要注入一个DLL到游戏进程中去直接调用游戏函数完成某一功能。结果发现该 游戏有NP保护,OpenProcess打不开,创建远程线程也不行,试用其它方法也一一失败。遇 到上面的情况,高手们自然是转到Ring0下面去,使用驱动之类的办法来对付啦,不过吾等 菜鸟可就是酒井没法子了 -_-| 不过也别太灰心,凡事总会有办法的。我想我们需要一种持久的、稳定的、不容易被安 全软件屏蔽的DLL注入方法,后来发现,输入法程序就是能完成这一任务的理想人选。输入 法程序程序到底是什么?它没有自己的进程,并且在系统还没有登录时就已被加载(在欢迎 界面你也可以调出输入法),它可以在游戏中打开,也可以在控制台程序中打开,还可以在 瑞星保护下的QQ中打开,在杀软中也可以打开,这不就是我们要找的特性吗。那么,输入法 到底是什么呢?根据Windows的规定,输入法其实就是一个DLL,不过它是一个特殊的DLL, 它必须具有标准输入法程序所规定的那些接口,输入法是由输入法管理器(imm32.dll)控 制的,输入法管理器又是由user32.dll控制的。输入法在系统目录是以IME为扩展名的文件 ,当在应用程序中激活某个输入法时,输入法管理器就会在那个应用程序的进程中加载对应 的IME文件,注意,加载IME文件跟加载普通的DLL并没有本质区别,所以,可以认为,输入 法其实就是注入到应用程序中的一个DLL文件,并且,这种“注入”是不会被杀软和游戏NP 拦截的(至少目前是)。现在,我们已经有了一个注入DLL的另类方法,那就是利用输入法 。具体流程是这样,首先制作一个标准输入法文件,但是这个输入法并不完成文字输入工作 ,它的唯一任务就是用来注入DLL,所以称为“服务输入法”,然后,制作一个控制程序, 来控制服务输入法,当然最后还需要一个用于注入的目标DLL,这样一共就有3个文件。开始 工作后,控制程序首先将服务输入法安装到系统中,然后传递几个参数给服务输入法,参数 中包括了需要注入的DLL文件的名称和路径,然后,控制程序将服务输入法设置为系统的默 认输入法,这样新的程序一打开,服务输入法就会注入那个程序。当然,在服务输入法安装 之前打开的程序不会被注入,这时需要向系统中的所有窗口POST一条 WM_INPUTLANGCHANGEREQUEST消息,该消息可以在指定窗口中后台激活服务输入法,这样, 系统中所有拥有窗口的进程就都被我们的服务输入法注入了。服务输入法注入程序之后,就 会根据控制程序传递过来的参数加载目标DLL,这样目标DLL也就随着服务输入法一同注入到 目标程序中了。注意服务输入法是控制程序用WM_INPUTLANGCHANGEREQUEST消息在所有窗口 中自动激活的,如果某个窗口自动激活失败,你就需要在那个窗口中手工切换到服务输入法 ,这样才能注入进去了。至于注入以后,你就可以在窗口中切换到别的输入法,这并不会影 响已经注入进去的DLL。我将这一套功能制作成一个完整的示例,你可以在以下地址下载: http://www.pen88.com/download/imehook.rar 压缩包中的第6个和第8个文件夹演示了此 功能并包含所有源代码。其中文件imedllhost09.dll就是服务输入法,运行时会被安装到系 统中,控制程序退出时会自动卸载该输入法,这样用户就不太容易察觉,你还可以重新编译 该输入法,将名称改为“中文(中国)”,这样隐蔽性更好。文件hxwdllwx.dll是演示用的 目标DLL,你可以替换成自己的DLL,然后那个exe文件就是控制程序了。输入法 imedllhost09.dll在运行时会被复制到系统目录并更名为imedllhost09.ime,它导出了2个 函数用于控制。在VB中的声明为: Public Declare Function IMESetPubString Lib "imedllhost09.ime" (ByVal RunDLLStr As String, ByVal UnloadDll As Long, ByVal loadNextIme As Long, ByVal DllData1 As Long, ByVal DllData2 As Long, ByVal DllData3 As Long) As Long Public Declare Function IMEClearPubString Lib "imedllhost09.ime" () As Long 其中IMESetPubString用于向输入法传递要注入的DLL等参数。RunDLLStr,要注入的DLL命令 和完整路径。UnloadDll,当输入法退出时,是否同时卸载目标DLL 0-是,1-否。 loadNextIme,当切换至该服务输入法时,是否直接切换到下一个输入法(这样服务输入法 就好像被跳过了,可最小限度影响用户的输入法顺序) 0-否,1-是。DllData1,DllData2 ,DllData3是传递给目标DLL的回调函数(函数名称必须为RunDllHostCallBack)的参数, 你可以在目标DLL中导出一个函数,名称为RunDllHostCallBack,这样当输入法注入时会调 用目标DLL的该回调函数并向其传递这3个参数。函数原型为(VC): DWORD RunDllHostCallBack(DWORD calldata1, DWORD calldata2,DWORD calldata3); IMEClearPubString函数用于清除输入法的配置,清除后,输入法将停止在新的程序中注入 目标DLL,但已注入的DLL不会卸载。 好了,利用输入法来注入DLL基本上就是这样了,详细的用法大家可以看压缩包中的第8个文 件夹,其中服务输入法是VC写的,控制程序是VB的,代码都是有注释的。测试发现该方法能 过目前所有杀软,也能注入冰刃。当然缺点还是有的,就是目标程序如果不接受输入法那就 没办法了,但是现在一般的游戏都不会禁止玩家在里面打字吧,而且杀软也不能禁止用户输 入汉字吧,哈哈,所以通用性应该还是蛮好的。 最后,我再介绍另一个注入DLL的方法,估计也很少被用到。是利用一个未公开函数 RegisterUserApiHook,可以在网上搜索关键词“RegisterUserApiHook”,查到有人在 Windows 2003下测试成功,但是我在Windows XP测试却失败。后来终于找到了失效的原因。 RegisterUserApiHook函数可以在系统中注册一个全局钩子,你需要在钩子中指定一个DLL和 一个回调函数,然后,所有加载了user32.dll的程序就都会在启动时加载你指定的这个DLL 。用这个函数来注入DLL也是很不错的。但是测试发现它的注入能力似乎赶不上上面提到的 利用输入法来注入的办法,可以注入一般的程序和某些安全程序,但是对冰刃无效。而且它 有一个限制,就是系统中只能同时存在一个这样的钩子。实际上这个钩子平时是被系统中的 Themes服务占用了,Themes服务正是利用这个钩子HOOK了绘制窗口的相关API,所以才让所 有程序窗口变成XP主题样式的。所以我们要用这个钩子的话,必须先关闭Themes服务,这样 在XP下也可以用了,但是这样系统就变成Windows 2000的样式了 -_-| RegisterUserApiHook函数的VB声明如下: Public Declare Function RegisterUserApiHookXP Lib "user32" Alias "RegisterUserApiHook" (ByVal hInstance As Long, ByVal fnUserApis As Long) As Long Public Declare Function RegisterUserApiHook2003 Lib "user32" Alias "RegisterUserApiHook" (pRegInfo As HookAPIRegInfo2003) As Long 可以看到,在XP和2003下这个函数的参数是不一样的。关于此函数的示例代码,请参见压缩 包中的第5个文件夹。 最后的最后,再介绍一个未公开函数InitializeLpkHooks,这个函数在网上能找到的资料更 少,只有一个声明而已。但是它名称中最后那个“Hooks”误导了我,我以为又是一个可以 用来注入DLL的不错函数,用OD反出来一看,原来只是个局部HOOK而已。虽然没太大用,还 是一并写上吧,也许谁用得着呢。InitializeLpkHooks顾名思义就是HOOK LPK的,Windows 有个lpk.dll,就是支持多语言包的那么个功能。测试发现好多程序在TextOut之前似乎是要 调用lpk.dll里面的相关函数的,可能是支持多语言的程序就需要用这个来判断到底要显示 那种语言吧。而InitializeLpkHooks,就是用来HOOK lpk.dll里面的4个函数的,这4个函数 是LpkTabbedTextOut,LpkPSMTextOut,LpkDrawTextEx,LpkEditControl。我们先打开VB, 在窗体中加入以下代码吧: Private Sub Form_Load() DLLhwnd = LoadLibrary("lpk.dll") '加载DLL DLLFunDre = GetProcAddress(DLLhwnd, "LpkDrawTextEx") '获取回调函数地址 LpkHooksInfo.lpHookProc_LpkTabbedTextOut = 0 LpkHooksInfo.lpHookProc_LpkPSMTextOut = 0 LpkHooksInfo.lpHookProc_LpkDrawTextEx = GetLocalProcAdress(AddressOf HookProc1) '设置要HOOK的LPK函数 LpkHooksInfo.lpHookProc_LpkEditControl = 0 InitializeLpkHooks LpkHooksInfo End Sub Private Sub Form_Unload(Cancel As Integer) LpkHooksInfo.lpHookProc_LpkTabbedTextOut = 0 LpkHooksInfo.lpHookProc_LpkPSMTextOut = 0 LpkHooksInfo.lpHookProc_LpkDrawTextEx = DLLFunDre LpkHooksInfo.lpHookProc_LpkEditControl = 0 InitializeLpkHooks LpkHooksInfo FreeLibrary DLLhwnd End Sub 然后新建一个模块,在模块中加入以下代码: Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long ' ----------------未公开函数-------------------------------------- Public Declare Sub InitializeLpkHooks Lib "user32" (lpProcType As Any) Type LpkHooksSetting lpHookProc_LpkTabbedTextOut As Long lpHookProc_LpkPSMTextOut As Long lpHookProc_LpkDrawTextEx As Long lpHookProc_LpkEditControl As Long End Type ' ------------------------------- Public DLLhwnd As Long, DLLFunDre As Long Public LpkHooksInfo As LpkHooksSetting Public Function GetLocalProcAdress(ByVal lpProc As Long) As Long GetLocalProcAdress = lpProc End Function Function HookProc1(ByVal a1 As Long, ByVal a2 As Long, ByVal a3 As Long, ByVal a4 As Long, ByVal a5 As Long, ByVal a6 As Long, ByVal a7 As Long, ByVal a8 As Long, ByVal a9 As Long, ByVal a10 As Long) As Long HookProc1 = 0 End Function 运行一下看看,是不是窗体中标题栏和按钮上的文字都没有了,因为我们把函数 LpkDrawTextEx替换成自己的函数HookProc1了。这个函数有10个参数,其中几个好像是字符 串指针,似乎可以用来截获窗体要显示的文字,然后改成另一种语言的文字,我猜想,也许 就是这个用途吧。哈哈,纯属猜测。以上就是函数InitializeLpkHooks的用法了。 以上就是全部。 本文所有示例代码的下载地址是: http://www.pen88.com/download/imehook.rar 我的QQ511795070,欢迎交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值