#发布说明(CSDN)#
- 面向 Windows 用户的登录辅助脚本,使用 AutoHotkey v2.0+ 。
- 通过 Ctrl+7 / Ctrl+8 / Ctrl+9 快捷键,自动输入不同环境的账号密码。
- 配套 login-config.ini 管理多环境账号,配合 VSCode 编码与运行。
#功能介绍#
- 快捷登录:在目标登录窗口激活时,按 Ctrl+7 → [local] 、 Ctrl+8 → [dev] 、 Ctrl+9 → [prd] 。
- 输入流程:输入用户名 → Tab → 输入密码 → Enter 提交。
- 兼容性优化:密码输入优先使用 SendText ,失败自动回退为剪贴板粘贴并恢复原剪贴板。
#环境准备#(AHK 版本、VSCode 扩展)
- 安装 AutoHotkey v2 :从官网下载安装 AutoHotkey v2.0+ (默认路径一般为 C:\Program Files\AutoHotkey\AutoHotkey64.exe )。版本:AutoHotkey_2.0.5 。注意最新版不可使用
https://www.autohotkey.com/download/2.0/AutoHotkey_2.0.5_setup.exe
- 建议安装 VSCode 及 AHK 扩展(如代码调试):
- AutoHotkey Plus Plus (扩展标识: cweijan.vscode-autohotkey-plus-plus ,支持运行与调试)
- 或 AutoHotkey v2 Language Support (扩展标识: mark-wiemer.autohotkey2 ,提供语法高亮/提示)
#项目结构#
- 脚本与配置放在同一目录: d:\develop
- 关键文件:
- d:\develop\login.ahk (主脚本)
- d:\develop\login-config.ini (登录配置)
- 可选: d:\develop\login.exe (脚本打包后的可执行
#脚本与配置#
脚本代码(AutoHotkey v2)
- 文件: login.ahk
- 说明:包含热键注册、稳健输入函数 TypeText 、从 INI 读取并键入的主流程。
- 代码:
#Requires AutoHotkey v2.0+
#SingleInstance Force
#Warn
; 登录辅助脚本(AHK v2)
; 用途:使用 Ctrl+7/8/9 自动输入不同环境的账号密码
; 前置:同目录存在 login-config.ini(段:[local]/[dev]/[prd])
; 安全:不落盘密码,只模拟键入;请在可信登录窗口中使用
; 配置文件路径(与脚本同目录)
confPath := A_ScriptDir . "\login-config.ini"
if !FileExist(confPath) {
MsgBox(
"未找到配置文件:" confPath
"`n`n请在脚本同目录新建 login-config.ini 并填写账号信息。"
"`n示例:"
"`n[local]"
"`nusername=你的账号"
"`npassword=你的密码"
"`n`n快捷键映射:^7→[local] | ^8→[dev] | ^9→[prd]"
"`n保存后重新试一次。"
)
}
; 注册热键:^7→[local]、^8→[dev]、^9→[prd];异常时弹窗提示
try {
Hotkey("^7", SendLogin.Bind("local") , "On")
} catch as e {
MsgBox("注册快捷键失败:^7" e.Message)
}
try {
Hotkey("^8", SendLogin.Bind("dev") , "On")
} catch as e {
MsgBox("注册快捷键失败:^8" e.Message)
}
try {
Hotkey("^9", SendLogin.Bind("prd"), "On")
} catch as e {
MsgBox("注册快捷键失败:^9" e.Message)
}
; 调试:验证热键是否捕获成功
TestHotkey(*) {
MsgBox("AHK 已捕获热键(测试成功):^F12")
}
; 可靠文本输入:优先 SendText,失败时用剪贴板粘贴并恢复原剪贴板
; 说明:部分输入框不接受 SendText 会抛异常
; 回退:临时覆盖剪贴板,等待复制完成后粘贴,并在 finally 恢复
TypeText(text) {
if (text = "")
return
try {
SendText(text)
return
} catch {
; 回退到剪贴板粘贴
clipSaved := ClipboardAll()
try {
Clipboard := text
ClipWait(0.5)
Send("^v")
} finally {
; 恢复原剪贴板(可能为空)
if (clipSaved)
Clipboard := clipSaved
else
Clipboard := ""
}
}
}
; 从指定段读取账号并输入,完成登录
; 参数:ztype 可选 "local"/"dev"/"prd"
; 流程:输入用户名→Tab→输入密码→Enter;密码用 TypeText 提高兼容性
SendLogin(ztype := "local", *) {
username := IniRead(confPath, ztype, "username", "") ; 读取用户名
password := IniRead(confPath, ztype, "password", "") ; 读取密码
if (username = "" || password = "") {
MsgBox("用户名或密码为空,请检查:" confPath)
return
}
SendInput(username) ; 用户名直接键入
Send("{Tab}") ; 切换到密码输入框
Sleep(150) ; 间隔,避免切换过快;可按需调整
TypeText(password) ; 使用可靠文本输入,兼容更多窗口
Send("{Enter}") ; 提交
}
#配置文件(INI)#
- 文件: \login-config.ini
- 注意:
- 值不要加引号,不要留多余的空格。
- 密码为明文存储,请评估安全性,仅在个人/受控环境使用。
- 示例(脱敏):
; 登录配置文件(AutoHotkey v2)
[local]
username= U786
password= your_local_password
[dev]
username= U786
password= your_dev_password
[prd]
username= U786
password= your_prod_password
#使用方法#
-运行 login.ahk
-将目标系统的登录窗口激活至前台。
- 按快捷键:
- Ctrl+7 → 使用 [local] 配置
- Ctrl+8 → 使用 [dev] 配置
- Ctrl+9 → 使用 [prd] 配置
- 脚本会自动输入用户名 → 切换到密码框 → 输入密码 → 回车提交。
- 可在脚本中调整间隔时间:修改 Sleep(150) 以适配不同系统响应速度。
#打包为 EXE(可选)#
- 打开 Ahk2Exe (随 AutoHotkey 安装提供)。
- 选择脚本路径: \login.ahk 。
- 选择输出路径:\login.exe 。
- 点击编译,生成单一可执行文件,便于分发与双击运行。
#常见问题#
- 快捷键无响应:
- 确认已安装 AutoHotkey v2 ,且脚本正在运行。
- 检查是否被其他程序占用快捷键;更改为不冲突的组合。
- 输入到错误窗口:
- 脚本会向当前激活窗口输入,请先手动聚焦到正确的登录界面。
- 配置未生效或报“用户名或密码为空”:
- 确认 login-config.ini 与脚本在同一目录。
- 去掉引号与多余空格;确保键名为 username 、 password 。
- 密码粘贴失败:
- 某些输入框不接受粘贴,脚本已自动回退机制,但可能仍失败。
- 可尝试提高 ClipWait 时间或直接用 SendInput (安全性较低)。
#安全建议#
- 避免把 login-config.ini 提交到仓库或外发,建议加入 .gitignore 。
- 仅在可信设备/环境使用;磁盘明文密码有风险。
- 如有合规要求,考虑改造为:
- 使用系统凭据管理器(Windows Credential Manager)。
&spm=1001.2101.3001.5002&articleId=153720277&d=1&t=3&u=5cf7feb28c3a43998f4a0e878c45e9dc)
4170

被折叠的 条评论
为什么被折叠?



