在AutoHotkey中快速发送长文本

时间:2014-12-10 08:14:35

标签: text autohotkey

我一直试图弄清楚如何更快地插入/扩展长文本。我目前使用的按键方法非常耗时,因此我宁愿避免使用它。

现在我使用以下方法:

::abc::all bad cats

或者更长的文字:

::li::
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

然而第二种方法有点慢。

有关如何避免这种缓慢扩展方法的任何建议?也许通过使用剪贴板从AHK脚本中复制和粘贴?

3 个答案:

答案 0 :(得分:4)

试试这个:

::li::
ClipSaved := ClipboardAll ; save the entire clipboard to the variable ClipSaved
clipboard := ""           ; empty the clipboard (start off empty to allow ClipWait to detect when the text has arrived)
clipboard =               ; copy this text:
(
Lorem ipsum dolor ...
line2
..
)
ClipWait, 2              ; wait max. 2 seconds for the clipboard to contain data. 
if (!ErrorLevel)         ; If NOT ErrorLevel, ClipWait found data on the clipboard
    Send, ^v             ; paste the text
Sleep, 300
clipboard := ClipSaved   ; restore original clipboard
ClipSaved =              ; Free the memory in case the clipboard was very large.
return

https://autohotkey.com/docs/misc/Clipboard.htm

答案 1 :(得分:2)

::li::  
text =
(
Line1
Line2
...
)
; IfWinActive, ahk_group textEditors ; create a group in the auto execute section
SendInput, %text%                      ;  SendInput is faster and more reliable
return

::li::
; IfWinActive, ahk_group textEditors
SendInput,
(
Line1
Line2
...
)
return

答案 2 :(得分:2)

使用autohotkey脚本语言发送快速长文的另一种方法是,

如果您将所有文本放在 Windows注册表内存。

然后你可以用[Registry Ram Memory Speed]读取它到[Clipboard Memory]粘贴它就完成了。

您可以尝试以下代码:

Example1.ahk:

; [^ = Ctrl] [+ = Shift] [! = Alt] [# = Win]
#SingleInstance Force

;Variant 1
;put any clipboard text into variable a1
;send ^c
;a1=%clipboard%

;Variant 2
;or put any Variable to variable a1
;a1 := "Any Text"

;Variant 3
;or put any File text to variable a1
FileRead, a1, C:\My File1.txt
FileRead, a2, C:\My File2.txt

;Write the variable's To Registry - KeyHintText,value1 to value2
RegWrite, REG_SZ, HKEY_CURRENT_USER, software\KeyHintText,value1,%a1%
RegWrite, REG_SZ, HKEY_CURRENT_USER, software\KeyHintText,value2,%a2%

:*:abc:: 
clipboard := a1
send ^v
return

:*:def:: 
clipboard := a2
send ^v
return

注意 - :*:abc :: =(你可以输入没有空格的abc) - :: abc :: =(你可以用空格键入abc)

如果您使用Windows注册表,那么专业人员是:

1 - 如果注册表中的Value1文本已更改,则使用相同的热键:*:abc ::

:*:abc:: 
RegRead, clipboard, HKEY_CURRENT_USER,software\KeyHintText,value1
send ^v
return

2 - 如果重新启动计算机,所有文本都会自动保存到Ram Memory。

然后,您只能使用此代码

example2.ahk

; [^ = Ctrl] [+ = Shift] [! = Alt] [# = Win]
#SingleInstance Force

;read the Variable's From Windows Registry
RegRead, a1, HKEY_CURRENT_USER,software\KeyHintText,value1 
RegRead, a2, HKEY_CURRENT_USER,software\KeyHintText,value2

:*:abc:: 
clipboard := a1
send ^v
return

:*:def:: 
clipboard := a2
send ^v
return

提示:我使用Buttoncommander软件,您可以在Windows桌面上制作一组可点击图片(工具栏),如果您将这些图片与图片一起推送,可以将abc文本替换为图片鼠标或触摸设备将执行(本机)Autohotkey命令代码。