![用变量替换文本字符串](https://linux22.com/image/1397429/%E7%94%A8%E5%8F%98%E9%87%8F%E6%9B%BF%E6%8D%A2%E6%96%87%E6%9C%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我正在使用.ahk
脚本进行文本替换。因此我使用
::-h:: Hi, thanks for your mail
但是,我现在想包含一个变量。所以我想尝试实现:
- 按 shk 快捷键 (-h)
- 弹出输入框/我插入变量(例如“marc”
- Ahk 打印包含变量的文本(例如,“嗨,马克,谢谢你的邮件”
我试图通过
::-h:: hi var1, thanks for your mail
var1 = inputbox("Insert Name")
但它不起作用。
答案1
为什么要使用额外的输入框?你可以使用更舒适的解决方案动态热字符串相反。如果我们对语法进行一点小改动,我们就可以构建一个简单但功能强大的热字符串:
hotstrings("([a-zA-Z -]+)#h", "Hi %$1%, thanks for your mail")
现在,如果您输入类似 的内容Marc#h
,它将自动被替换,而无需处理难看的输入框。这也适用于全名,例如Marc Smith#h
。通过使用#h
而不是-h
,我们还可以输入双名:Mary-Anne#h
将与 一样有效Emma-Kate Smith-Jones#h
。
答案2
; SetKeyDelay, keyDelay:=250, pressDuration:=50
OnMessage(WM_LBUTTONDOWN:=0x201, "WndProc"), uStyle:=(WS_BORDER :=0x00800000)
+=(WS_CAPTION:=0x00C00000)
|=(WS_SIZEBOX:=0x00040000)
::-h::
SetTimer, % "ChangeStyle", -50
InputBox, outputVar
,, % " enter something"
,, 125, 90
, A_ScreenWidth/2-65
, A_ScreenHeight/2-45
IfNotEqual, ErrorLevel, 0, MsgBox, 262144, % A_Space, % "entry canceled", .75
IfEqual, ErrorLevel, 0, SendEvent, % "{Raw}Hi "outputVar ", thanks for your mail"
Return
ChangeStyle:
WinSet, AlwaysOnTop, On, % "A"
WinSet, Style, % "^"uStyle, % "A"
Return
WndProc(aParams*)
{
Static WM_NCLBUTTONDOWN:=0x00A1, HTCAPTION:=2
PostMessage, WM_NCLBUTTONDOWN, HTCAPTION,,, % "ahk_id"aParams.4
}