URL aus Zwischenablage verlinken

Immer wieder nervt es mich, wenn ich blogge oder in anderen Blogs kommentiere und einen benannten Link einfügen möchte. Normalerweise geht das so ab, dass ich meinen Text schreibe und danach die passende URL heraussuche. Dann pfriemle ich den HTML-Tag irgendwie in den Text rein. Für den Firefox gibt es die BBCode-Erweiterung, die aber eben nicht in den anderen Browsern zur Verfügung steht.

Da ich mich zur Zeit wieder stärker mit Autohotkey beschäftigt habe, habe ich mir jetzt den ultimativen Verlinker gebastelt, der sich ganz an meine Arbeitsweise anpasst. Ich schreibe also meine Text wie immer, markiere die entsprechende Wortgruppe, suche die URL raus, kopiere sie in die Zwischenablage und drücke nun [Strg + Umsch + L]. Und nun wird der HTML-Link so eingebaut, dass die Markierung korrekt verlinkt ist. Dabei unterscheidet das Skript ganz grob nach Weblink, E-Mailadresse und keinem Link. Und das Wichtigste dabei: Das Ganze ist browserübergreifend.

Damit jeder was davon hat, hier der Code dazu und weiter unten die Schritt-für-Schritt-Erläuterung:

Das ganze Skript ist etwas komplexer und mit vielen If/Else-Abfragen gemacht. Eigentlich mag ich solche verschachtelten Abfragen nicht so, aber momentan habe ich keine andere Idee. Also, los gehts:

^+l::
clip1 = %clipboard%
Send, ^c
IfInString, clip1, http:// {
link = <a href="%clip1%">%clipboard%</a>
} else{
IfInString, clip1, @ {
link = <a href="mailto:%clip1%">%clipboard%</a>
} else {
InputBox, url, Bitte eine URL angeben,,,250,100
if url not contains http,@ {
return
} else {
IfInString, url, @ {
link = <a href="mailto:%url%">%clipboard%</a>
} else {
link = <a href="%url%">%clipboard%</a>
}}}}
clipboard = %clip1%
SendInput, %link%
return

Und wie immer folgt jetzt die Erläuterung der einzelnen Zeilen:

^+l::

Als erstes wird wie immer die Tastenkombination festgelgt, mit der der Link später eingefügt wird. In meinem Fall ist das [Strg + Umsch + L]

clip1 = %clipboard%

Jetzt wird die Zwischenablage, die die URL enthält, in der Variable „clip1“ zur späteren Verwendung gesichert.

 Send, ^c

Der markierte Text wird in die Zwischenablage kopiert. Das geschieht über die simulierte Tastenfolge [Strg + C]. Hätte ich die Zwischenablage von oben nicht gesichert, wäre sie jetzt überschrieben.

IfInString, clip1, http:// {
link = <a href="%clip1%">%clipboard%</a>
} else{

Jetzt wird mit IfInString überpüft, ob die Variable „clip1“ irgendwo die Zeichenkette „http://“ enthält. Daran erkennt das Skript, dass es sich um einen Hyperlink handelt. Wenn dem so ist, wird die Variable „link“ mit dem korrekten HTML-Tag gefüllt. Dabei kommt die URL aus der Variable „url“ und der Linkname aus der Zwischenablage. Das ist die die Systemvariable „clipboard„, die nicht extra erzeugt werden muss.

IfInString, clip1, @ {
link = <a href="mailto:%clip1%">%clipboard%</a>

Jetzt wird nach dem gleichen Muster geprüft, ob die Zwischenablage ein @ enthält. Wenn ja, wird der Link so umgebaut, dass er die E-Mailadresse korrekt verlinkt.

} else {
InputBox, url, Bitte eine URL angeben,,,250,100

Falls die Zwischenablage weder eine URL, noch eine E-Mailadresse enthält, wird davon ausgegangen, dass nichts Verlinkbares drin ist und damit wird eine Eingabemaske angezeigt, die befüllt werden kann. Weil die Eingabemaske von Autohotkey erzeugt wird, kann ich, während sie geöffnet ist, auch noch schnell mal einen anderen Tab öffnen. Das geht nämlich nicht, wenn die Maske vom Browser erzeugt würde. Aber das nur am Rande. Jedenfalls landet der Inhalt aus der Eingabemaske in der Variable „url„.

if url not contains http,@ {
return

Diese Eingabe wird nun erstmal nach den beiden bekannten Mustern („http://“ und „@“) geprüft. Wenn nichts davon enthalten ist, wird das Skript beendet und damit auch kein Link erzeugt.

} else {
IfInString, url, @ {
link = <a href="mailto:%url%">%clipboard%</a>
} else {
link = <a href="%url%">%clipboard%</a>
}}}}

Hier wird wieder die Eingabe aus dem Formular, mit den selben Funktionen wie oben schon, auf Link oder E-Mailadresse geprüft, der Link entsprechend zusammengebaut und die vielen If-/Else-Abfragen verlassen.

clipboard = %clip1%

Jetzt wird noch die ursprüngliche Zwischenablage wieder hergestellt, denn der Link wird vielleicht noch woanders verwendet.

SendInput, %link%

Hiermit wird der HTML-Tag nun endgültig in die Anwendung (Editor oder Browserfenster) eingefügt und die Funktion mit

return

verlassen.

Die Überprüfung, ob Link oder E-Mailadresse kann man sicher mit regulären Ausdrücken machen. Aber erstens stehe ich mit denen auf Kriegsfuß und zweitens reicht mir diese einfache Überprüfung völlig aus. Es geht ja nicht um irgendwelche sicherheitsrelevanten Einsatzgebiete. ;)

Wie ich festgestellt habe, funktioniert es nicht, wenn das Skript so, wie es da oben steht in den Texteditor kopiert und gespeichert wird. Deshalb habe ich das Skript als AHK-Skript und als EXE zusammengepackt.

Viel Spaß bei Ausprobieren und weiterbasteln!

Über den Autor

Michael Sonntag

Michael Sonntag schreibt hier über Tipps und Tools, um die tägliche, wiederkehrende Arbeit im Büro oder Homeoffice zu erleichtern. Mehr von Michael gibts u.a. auf PAPIERLOS LESEN.

2 Kommentare

Trackback  •  Kommentarfeed

  1. Horst Scheuer sagt:

    Die Idee ist nicht schlecht. Könnte ich auch gebrauchen. Mal sehen wie und wo ich deinen Code bei mir einfüge!

  2. Bjoern sagt:

    Tolle Anleitung…
    Wenn man so wie ich nicht viel Plan von Autohotkey hat geschweige die Codes zu erstellen, dann hat das Post etwas von einem Tutorial und das wird bei mir gebookmarkt!! Danke

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Hoch