如何在热字串中逐行发送一段文本?
How to send a block of text line-by-line in a hotstring?
我有一个包含多行的文本块,我想将它逐行发送到 chap app。我想要这样的程序:
- 我输入一个热字串触发器(例如,
hotstringtrigger
),AutoHotKey 将发送第一行(文本应保留在聊天应用程序的输入框中)
- 我根据自己的需要对其进行编辑
- 我按回车键。聊天应用程序将发送文本,而 AutoHotKey 将发送下一行
- Return 到 2 直到没有更多的行
- Enter 之后将正常运行,直到再次输入
hotstringtrigger
到目前为止,我的尝试是将其拆分为多个热字串:
:*:hotstringtrigger::first line
:*:hotstringtrigger2::second line
:*:hotstringtrigger3::third line
...
但这有一些缺点:
- 使用很多热字串
- 有额外的按键
此页面似乎没有涵盖此内容:Hotstrings - Definition & Usage | AutoHotkey
我想非常简单直接的例子可能是这样的
TextToSend := "
(
first line
second line
)"
lines := StrSplit(TextToSend, "`n", "`r")
:*T:hotstringtrigger::
SendInput,
(
Hello ____________________. Welcome to the World^{Home}{right 6}
)
i := 1
return
~Enter::
if (!i || i > lines.length())
return
SendInput, % "{Text}" lines[i]
i++
return
这里的输入文本只是在脚本启动时输入 continuation section and loaded from there to an array。当您想要的热字串是 运行 时,索引 i
会重置。
然后按 Enter,文本从数组发送,直到我们的索引 i
大于输入字符串中的行长度。
如果您的输入文本有很长的行,您应该先将行加载到剪贴板,然后只需发送 Ctrl + v.
尝试使用 Array:
; Create the array, initially empty:
Array := [] ; or Array := Array()
text =
(
first line
second line
third line
)
; Write to the array:
Loop, parse, text,`n
Array.Push(A_LoopField) ; Append this line to the array.
return
F1::
Index++ ; checks the number in the variable "Index" and increases it by 1 every time you press F1
if (Index <= Array.MaxIndex())
SendInput, % Array[Index]
else
MsgBox, No more lines.
return
我有一个包含多行的文本块,我想将它逐行发送到 chap app。我想要这样的程序:
- 我输入一个热字串触发器(例如,
hotstringtrigger
),AutoHotKey 将发送第一行(文本应保留在聊天应用程序的输入框中) - 我根据自己的需要对其进行编辑
- 我按回车键。聊天应用程序将发送文本,而 AutoHotKey 将发送下一行
- Return 到 2 直到没有更多的行
- Enter 之后将正常运行,直到再次输入
hotstringtrigger
到目前为止,我的尝试是将其拆分为多个热字串:
:*:hotstringtrigger::first line
:*:hotstringtrigger2::second line
:*:hotstringtrigger3::third line
...
但这有一些缺点:
- 使用很多热字串
- 有额外的按键
此页面似乎没有涵盖此内容:Hotstrings - Definition & Usage | AutoHotkey
我想非常简单直接的例子可能是这样的
TextToSend := "
(
first line
second line
)"
lines := StrSplit(TextToSend, "`n", "`r")
:*T:hotstringtrigger::
SendInput,
(
Hello ____________________. Welcome to the World^{Home}{right 6}
)
i := 1
return
~Enter::
if (!i || i > lines.length())
return
SendInput, % "{Text}" lines[i]
i++
return
这里的输入文本只是在脚本启动时输入 continuation section and loaded from there to an array。当您想要的热字串是 运行 时,索引 i
会重置。
然后按 Enter,文本从数组发送,直到我们的索引 i
大于输入字符串中的行长度。
如果您的输入文本有很长的行,您应该先将行加载到剪贴板,然后只需发送 Ctrl + v.
尝试使用 Array:
; Create the array, initially empty:
Array := [] ; or Array := Array()
text =
(
first line
second line
third line
)
; Write to the array:
Loop, parse, text,`n
Array.Push(A_LoopField) ; Append this line to the array.
return
F1::
Index++ ; checks the number in the variable "Index" and increases it by 1 every time you press F1
if (Index <= Array.MaxIndex())
SendInput, % Array[Index]
else
MsgBox, No more lines.
return