无忧启动论坛

 找回密码
 注册
搜索

【已解决】求输入法切换到ENG的代码(bat、vbs、wcs、ahk)都行。谢谢

查看数: 688 | 评论数: 30 | 收藏 6
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-2-21 14:13

正文摘要:

本帖最后由 yyz2191958 于 2025-2-22 12:38 编辑 完美解决了: 输入法切换到 ENG(英文).ahk: ; AHK 切换输入法为 ENG(英文) PostMessage, 0x50, 0, 0x0409, , A ; 0x0409 是 ENG 的语言 ID ========== ...

回复

milkgirl 发表于 4 小时前
学习学习
lucky323su 发表于 6 小时前
谢谢分享。
sulong 发表于 9 小时前
原来如此,感谢分享
guong 发表于 9 小时前
来学习一下
szwp 发表于 11 小时前
yyz2191958 发表于 2025-2-21 16:38
PE 环境 没有PowerShell  谢谢

可以有
yyz2191958 发表于 11 小时前
martin313 发表于 2025-2-22 09:23
按下 F1 切换为英文,按下 F2 切换为中文。

; 切换为英文

确实可行  非常感谢
yyz2191958 发表于 11 小时前
martin313 发表于 2025-2-22 09:23
按下 F1 切换为英文,按下 F2 切换为中文。

; 切换为英文

不错 谢谢
martin313 发表于 12 小时前
yyz2191958 发表于 2025-2-21 19:14
强迫症的问题解决了   我很满意


按下 F1 切换为英文,按下 F2 切换为中文。

; 切换为英文
F1::
    PostMessage, 0x50, 0, 0x0409, , A
    return

; 切换为中文(简体)
F2::
    PostMessage, 0x50, 0, 0x0804, , A
    return

点评

确实可行 非常感谢  详情 回复 发表于 11 小时前
不错 谢谢  详情 回复 发表于 11 小时前

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

wang1126 发表于 15 小时前
谢谢楼主分享
绿光科技 发表于 20 小时前
这个值得学习一下
promrhxq 发表于 昨天 22:18
感谢分享好东东
9zhmke 发表于 昨天 22:01
以前我也遇到在软件界面输入用户名时有中文的情况,没找到办法,最终使用了粘贴大法才解决了。
fjun67 发表于 昨天 20:59
yyz2191958 发表于 2025-2-21 19:14
强迫症的问题解决了   我很满意

呵呵,那就好
fruit 发表于 昨天 20:59
学习一下,谢谢楼主分享
yyz2191958 发表于 昨天 19:14
fjun67 发表于 2025-2-21 19:08
也算是一个创意

强迫症的问题解决了   我很满意

点评

按下 F1 切换为英文,按下 F2 切换为中文。 ; 切换为英文 F1:: PostMessage, 0x50, 0, 0x0409, , A return ; 切换为中文(简体) F2:: PostMessage, 0x50, 0, 0x0804, , A return  详情 回复 发表于 12 小时前
呵呵,那就好  详情 回复 发表于 昨天 20:59
fjun67 发表于 昨天 19:08
也算是一个创意

点评

强迫症的问题解决了 我很满意  详情 回复 发表于 昨天 19:14
martin313 发表于 昨天 18:16
yyz2191958 发表于 2025-2-21 17:25
你没有看明白我的意思哦
Lua 代码也无法实现

纯Lua原生环境无法直接调用Windows API(如LoadKeyboardLayout, PostMessage等),因其设计定位为轻量级脚本语言,不包含操作系统级交互功能。要实现输入法切换,必须借助依赖系统工具(如PowerShell)
yyz2191958 发表于 昨天 17:52
本帖最后由 yyz2191958 于 2025-2-21 17:53 编辑
holley2008 发表于 2025-2-21 17:40
确认一下你的PE 中ENG的语言ID是不是0409

AHK 切换输入法为 ENG(英文)————————成功
(WCS 切换输入法为 ENG————不成功)
再次感谢
qq8899399 发表于 昨天 17:50
同示 在线蹲一个 批处理的解决方案
yyz2191958 发表于 昨天 17:48
holley2008 发表于 2025-2-21 17:40
确认一下你的PE 中ENG的语言ID是不是0409

我试一试先 谢谢
holley2008 发表于 昨天 17:40
本帖最后由 holley2008 于 2025-2-21 17:44 编辑
  1. ; AHK 切换输入法为 ENG(英文)
  2. PostMessage, 0x50, 0, 0x0409, , A ; 0x0409 是 ENG 的语言 ID
复制代码
  1. // WCS 切换输入法为 ENG
  2. var shell = new ActiveXObject("WScript.Shell");
  3. shell.SendKeys("^{SPACE}");
复制代码

确认一下你的PE 中ENG的语言ID是不是0409

点评

就这层像话!  发表于 昨天 17:54
AHK 切换输入法为 ENG(英文)————————成功 再次感谢  详情 回复 发表于 昨天 17:52
我试一试先 谢谢  详情 回复 发表于 昨天 17:48

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

yyz2191958 发表于 昨天 17:25
忧心的启 发表于 2025-2-21 17:24
晕就一个注册表,自己不会找找吗。

你没有看明白我的意思哦

点评

纯Lua原生环境无法直接调用Windows API(如LoadKeyboardLayout, PostMessage等),因其设计定位为轻量级脚本语言,不包含操作系统级交互功能。要实现输入法切换,必须借助依赖系统工具(如PowerShell)  详情 回复 发表于 昨天 18:16
忧心的启 发表于 昨天 17:24
晕就一个注册表,自己不会找找吗。

点评

你没有看明白我的意思哦  详情 回复 发表于 昨天 17:25
yyz2191958 发表于 昨天 17:24
martin313 发表于 2025-2-21 17:21
纯VBScript无法完成楼主的要求

谢谢 解答
martin313 发表于 昨天 17:21
纯VBScript无法完成楼主的要求

点评

谢谢 解答  详情 回复 发表于 昨天 17:24
yyz2191958 发表于 昨天 16:44
aceainarj 发表于 2025-2-21 14:30
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout\Preload]

没有效果也谢谢
yyz2191958 发表于 昨天 16:38
martin313 发表于 2025-2-21 14:47
以下是一个通过批处理调用 PowerShell 实现切换到 ENG 输入法的解决方案:

@echo off

PE 环境 没有PowerShell  谢谢

点评

可以有  详情 回复 发表于 11 小时前
纯VBScript无法完成楼主的要求  发表于 昨天 17:22
martin313 发表于 昨天 14:47
本帖最后由 martin313 于 2025-2-21 15:47 编辑

以下是一个通过批处理调用 PowerShell 实现切换到 ENG 输入法的解决方案:

@echo off
powershell -Command "$sig = '[DllImport(\"user32.dll\")] public static extern IntPtr GetForegroundWindow(); [DllImport(\"user32.dll\")] public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport(\"user32.dll\")] public static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint flags);'; Add-Type -MemberDefinition $sig -Name Keyboard -Namespace API; $hkl = [API.Keyboard]::LoadKeyboardLayout('00000409', 1); $hWnd = [API.Keyboard]::GetForegroundWindow(); [API.Keyboard]::PostMessage($hWnd, 0x50, 1, $hkl.ToInt32()); Start-Sleep -Milliseconds 200"

代码说明:
使用 PostMessage API 向当前窗口发送 WM_INPUTLANGCHANGEREQUEST 消息(0x50)
参数 0x0409 对应美式英语键盘布局(0409:00000409)
兼容 Windows 7 及以上系统,无需管理员权限

使用方法:
将代码保存为 SwitchToENG.bat
双击运行即可立即切换至 ENG 输入法

注意事项:
需确保 PowerShell 可正常使用(默认已启用)
若系统从未运行过 PowerShell 脚本,首次执行可能会有短暂延迟
切换效果对当前活动窗口立即生效

点评

PE 环境 没有PowerShell 谢谢  详情 回复 发表于 昨天 16:38

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

aceainarj 发表于 昨天 14:31
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout]

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="d0000804"
"2"="00000804"
"3"="00000804"
"4"="00000804"

[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
"d0000804"="00000409"

[HKEY_CURRENT_USER\Keyboard Layout\Toggle]

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-22 21:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表