基于AutoHotkey GUI实现任意应用预设文本插入的技术咨询
嘿,我懂你要的是什么——一个不用死记热键,点个GUI按钮就能往任何应用里插预设文本的小工具,你的基础代码已经把核心架子搭起来了!我来给你优化扩展一下,让它更顺手好用~
优化后的快速文本插入脚本方案
1. 基础功能升级:置顶窗口+多行文本支持
你的原始代码已经实现了核心需求,但可以加几个超实用的小特性:
- 让GUI窗口始终置顶,这样不管你在哪个应用里,都能快速点到按钮
- 支持插入带换行的多行文本(比如完整段落)
- 用统一的函数处理插入逻辑,避免重复写代码
优化后的完整代码:
; 让窗口始终置顶,不会被其他应用挡住 Gui +AlwaysOnTop ; 添加按钮,用g标签绑定统一的插入函数,v标签标记按钮身份 Gui, Add, Button, x20 y20 w140 h40 gInsertText vTitleBtn, 插入标题文本 Gui, Add, Button, x20 y70 w140 h40 gInsertText vParaBtn, 插入段落文本 ; 可以继续添加更多按钮,比如常用联系方式 Gui, Add, Button, x20 y120 w140 h40 gInsertText vContactBtn, 插入联系方式 ; 调整窗口大小,让布局更舒服 Gui, Show, x152 y89 h181 w182, 快速文本插插乐 Return ; 统一处理所有按钮的文本插入逻辑 InsertText: ; 根据触发按钮的v标签判断要发送的内容 if (A_GuiControl = "TitleBtn") { ; `n代表换行,想加换行直接加就行 SendInput, 我的专属标题`n } else if (A_GuiControl = "ParaBtn") { SendInput, 这是一段预设好的段落文本,支持多行内容哦!`n第二行内容自动换行,点击按钮就直接插到当前激活的应用里啦~ } else if (A_GuiControl = "ContactBtn") { SendInput, 邮箱:myemail@test.com`n电话:123-4567890 } return ; 关闭窗口时退出程序 GuiClose: ExitApp
2. 进阶玩法:批量管理预设文本
如果你的预设文本特别多,一个个加按钮太麻烦,换成下拉菜单+单个插入按钮更高效:
Gui +AlwaysOnTop ; 下拉菜单列出所有预设选项,用|分隔 Gui, Add, DropDownList, x20 y20 w140 h200 vSelectedItem, 标题文本|段落文本|联系方式|客户欢迎语 Gui, Add, Button, x20 y70 w140 h40 gInsertSelected, 插入选中内容 Gui, Show, x152 y89 h131 w182, 快速文本插插乐 Return InsertSelected: ; 获取下拉菜单选中的内容,不关闭窗口 Gui, Submit, NoHide ; 用switch判断选中项,比多个if更清晰 switch(SelectedItem) { case "标题文本": SendInput, 项目汇报标题 case "段落文本": SendInput, 尊敬的领导:`n您好!现将本周工作进展汇报如下:`n1. 完成XX任务`n2. 推进XX项目`n请审阅。 case "联系方式": SendInput, 姓名:李四`n邮箱:lisi@example.com`n地址:XX市XX区XX路 case "客户欢迎语": SendInput, 您好!非常感谢您的咨询,我会尽快为您解答😊 } return GuiClose: ExitApp
3. 额外实用小细节
- 用
SendInput代替Send:插入文本的速度更快,稳定性也更好,直接替换就行 - 特殊字符支持:中文标点、emoji这些直接写在Send内容里就可以正常插入
- 托盘最小化:如果不想窗口占桌面空间,可以加个托盘功能,不用时最小化到托盘:
; 在Gui Show之前添加这段代码 Menu, Tray, Icon, shell32.dll, 137 ; 设置一个系统自带的托盘图标 Menu, Tray, Add, 显示窗口, ShowWindow Menu, Tray, Add, 退出程序, ExitApp Menu, Tray, Default, 显示窗口 ShowWindow: Gui, Show return
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

