用变量替换文本字符串

用变量替换文本字符串

我正在使用.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
}

相关内容