Ich habe für mich ein kleines Skript gemacht, mit dem ich in jeden Editor (Notepad, Forum etc.) Autotext einfügen kann. Das Skript funktioniert mit der Skriptsprache
Autohotkeyhttp://www.autohotkey.com/download/Ihr kopiert das Skript in eine Datei mit der Endung "ahk". Eine fertige Datei "Makros.ahk" ist angehängt. Wenn Autohotkey installiert ist, muß das Skript nur doppelgeklickt werden. Es kann auch automatisch gestartet werden, wenn Ihr das Skript (oder eine Verknüpfung) in den Autostart-Ordner legt.
/*
Der Autotext kann in jeder Textdatei mit folgendem Format enthalten sein:
[Autotext]
n=nicht
mfg=Mit freundlichen Grüßen^a^aMax Meier
mvH=Mit vorzüglicher Hochachtung^a^a~MM~
hav=Hochachtungsvoll^a^a~HH~
MM=Max Meier
HH=Hans^tHuber
In dieser Datei können folgende Besonderheiten verwendet werden (s. Beispiele oben):
^a = Absatz
^t = Tabulator
~xx~ = Verweis auf einen anderen Autotext-Eintrag
Die Datei kann in Zeile 26 des Skripts eingetragen werden (voreingestellt: "C:\Zwi\Makros.txt").
Verwendung:
Ihr schreibt in den Editor die Kurzbezeichnung des Autotexteintrags (z. B. "mfg").
Das Skript liest mit <Alt-F3> diese Kurzbezeichnung aus und schreibt an diese Stelle
den Autotext. Wenn der entsprechende Autotext nicht vorhanden ist bleibt die Kurzbezeichnung (markiert) stehen.
*/
; Fügt Makros aus Makros.txt vor der aktuellen Cursorposition ein.
; ShortCut: <Alt+F3>
~!F3::
; Als <MakroDat> kann hier kann jeder andere Dateiname in jedem anderen Ordner verwendet werden:
MakroDat := "C:\Zwi\Makros.txt"
; Markiert die Kurzbezeichnung:
IniErg := PreSelection2Makro(MakroDat)
; Fügt jetzt die Ersetzung ein.
SendInput, %IniErg%
return
;******************************************************************************
; Ersetzt einen <EString> durch einen Makrostring aus <MakroDat>:
Ersetzung(EString, MakroDat)
{
; Ersetzt den ermittelten String.
; Holt die Ersetzung:
IniRead, IniErg, %MakroDat%, Autotext, %EString%, %A_Space%
; Ersetzt alle Strings zwischen Tilden mit weiteren Ersetzungsstrings.
LOOP ; Sucht alle Vorkommen von "~"
{
StringGetPos, Stelle1, IniErg,~
IF Stelle1<0
Break
StringGetPos, Stelle2, IniErg,~, L2
Abfrage := SubStr(IniErg, Stelle1+2, Stelle2-Stelle1-1)
IniRead, TildeErg, %MakroDat%, Autotext, %Abfrage%, %A_Space%
StringReplace, IniErg, IniErg, ~%Abfrage%~ , %TildeErg%, All
}
; Ersetzt Absatzzeichen (^a) etc. mit AHK-typischen Befehlen.
StringReplace, IniErg, IniErg,^a,`n, All
StringReplace, IniErg, IniErg,^t,{TAB}, All
Return IniErg
}
;******************************************************************************
; Ermittelt das letzte Wort vor der aktuellen Cursorposition:
PreSelection()
{
; Sichert den Inhalt des Clipboards und leert das Clipboard.
AlterClipboardInhalt := ClipboardAll ; Sichern des Inhaltes von Clipboard
Clipboard =
; 1. Teil: Ermittelt den zu ersetzenden String.
Länge := 0
SonderZ := ".,?,;"
LOOP ; Ermittelt das maßgebliche ganz Wort vor der aktuellen Cursoposition
{
Send, +{LEFT} ; Ein makiertes Zeichen nach links
Auswahl := Selection(true) ; ermittelt die aktuelle Markierung
StringLeft, Links, Auswahl, 1 ; Das äußerste linke Zeichen der Markierung
CharNr := ASC(Links)
IsSonderZ := false
IF Links in ä,ö,ü,Ä,Ö,Ü,ß
IsSonderZ := true
; Steigt aus bei Leerzeichen, Sonderzeichen, Absatzzeichen etc.
; Es gelten nur Ziffern, Buchstaben und Umlaute:
IF NOT ((CharNr>=48 AND CharNr<=57) OR (CharNr>=65 AND CharNr<=90) OR (CharNr>=97 AND CharNr<=122) OR IsSonderZ)
GoTo Zurück
; Wenn es nicht mehr weiter nach Links geht (Dateianfang)
IF StrLen(Auswahl)=Länge
GoTo Fertig
StringLen, Länge, Auswahl
}
Zurück:
; Geht wieder eine Cursorposition nach Rechts:
Send, +{RIGHT}
Fertig:
; Ermittelt die maßgebliche jetzt aktuelle Markierung:
Auswahl := Selection(true)
; Zurücksichern des alten Clipboardinhalts:
ClipBoard := AlterClipboardInhalt ; Alten Inhalt des Clipboards wiederherstellen
Return Auswahl
}
;******************************************************************************
; Kombination aus PreSelection() und Ersetzung()
PreSelection2Makro(MakroDat)
{
; Ermittelt den zu ersetzenden String:
Auswahl := PreSelection()
; Ersetzt den ermittelten String:
IniErg := Ersetzung(Auswahl, MakroDat)
Return IniErg
}
;******************************************************************************
; Ermittelt den aktuell markierten Text, die aktuell markierte Datei etc.:
Selection(OhneSichern = false, Warten = 5)
{
IF NOT OhneSichern
AlterClipboardInhalt := ClipboardAll ; Sichern des Inhaltes von Clipboard
Clipboard =
Send ^c ; Kopiert die Datei
ClipWait, %Warten% ; Warte auf neuen Inhalt im Clipboard. 5 wg. Netzlaufwerken, die ggf. langsamer sind.
RückG := ClipBoard ; Speichern des Namens zur weiteren Verarbeitung
IF NOT OhneSichern
ClipBoard := AlterClipboardInhalt ; Alten Inhalt des Clipboards wiederherstellen
Return RückG
}