609 Benutzer online
22. Dezember 2024, 14:33:15

Windows Community



Zum Thema Skript zum Einfügen von Autotext - 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 Skriptsp... im Bereich Programmierung und Scripting
Autor Thema:

Skript zum Einfügen von Autotext

 (Antworten: 0, Gelesen 7545 mal)

  • News-Redakteur
  • Windows 2000
  • Beiträge: 3162
Skript zum Einfügen von Autotext
« am: 04. Oktober 2009, 12:08:48 »
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 Autohotkey
http://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
}
« Letzte Änderung: 04. Oktober 2009, 12:11:15 von OCtopus »

(auto)bot

vista windows wiederherstellen keine auslesen 2007 anzeigen kopieren absturz funktioniert
datei netzwerk outlook einer auto explorer automatisch software office zeit