2016-07-29 30 views
0

Ich bin ziemlich neu auf AutoHotKey, und ich versuche, mein Makro-System zu machen. Zur Zeit habe ich ein System, das wie folgt aussieht: I Textvariablen habenErstellen von Text-Makro-System auf AHK

hi = 
(
Hello, 

Some more text 
) 

ein Hotstring

::\hi:: 
Macro(hi) 
return 

Und eine Funktion Macro:

Macro(text) 
{ 
ClipSaved := ClipboardAll  ; save clipboard 
clipboard := text 
ClipWait 
Sleep, 150 
Send, ^v 
clipboard := ClipSaved  ; restore original clipboard 
return 
} 

Der Grund für die Verwendung einer Funktion mit Zwischenablage ist, weil lange Textblöcke eine Verzögerung haben, bis sie ausgedruckt werden, ein Problem, das nicht mit der Funktion auftritt.

Ich habe ein Konzept namens dynamische hotstrings gefunden, und ich denke, ich kann es irgendwie implementieren, so dass ich nicht den zweiten angezeigten Block für jedes Textfeld schreiben müsste, sondern stattdessen eine eine Hotstring, die verstehen würde wenn es meine Eingabe beginnt mit \ und es ist eine Variable im Skript unter dem Namen x, die darauf folgt, sollte es Macro(x) ausführen, aber ich habe nie ähnliche Beispiele gefunden.

Können Sie mir ein Codebeispiel bereitstellen oder irgendwelche Hinweise darauf geben, was ich prüfen sollte?

Antwort

1

Es gibt mehrere dynamische Hotstring AutoHotkey Funktionen, aber das ist wahrscheinlich diejenige, die Sie Hotstring von menixator

So müssen Sie die hotstring.ahk herunterladen und # include es wie in den Beispielen verwendet werden soll.

#SingleInstance, force 
#include Hotstring.ahk 

hi= 
(
Hello, 

Some more text 
) 

bye= 
(
So long, 

Some more text 
) 

Hotstring("/hi", "Paste") 
Hotstring("/bye", "Paste") 
return 

Paste: 
text:=Trim($,"/") ; we need to get rid of the leading/
text:=% %text%  ; and need to dereference it 
Macro(text) 
Return 

Macro(text) 
{ 
ClipSaved := ClipboardAll  ; save clipboard 
Clipboard := text 
ClipWait 
Sleep, 150 
Send, ^v 
clipboard := ClipSaved  ; restore original clipboard 
return 
} 

Es gibt einige elegantere Möglichkeiten, es zu tun, vor allem mit den Variablen, können Sie sie in einem globalen Objekt speichern kann (assoziatives Array) zum Beispiel, aber dies sollte erhalten Sie gehen.