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!
Die Idee ist nicht schlecht. Könnte ich auch gebrauchen. Mal sehen wie und wo ich deinen Code bei mir einfüge!
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
WOW… kaum in der Windows Welt und eine Alternative für Keyboard Maestro gesucht, schon lande ich auf Deiner tollen Seite mit Tipps und Tricks, Michael.
AHK ist denke ich ein mächtiges Werkzeug… bin total begeistert!
Dieses Script was Du hier zeigst, ist fast das was ich benötige. Kann man mit AHK auch den benachbarten Tab eines Browsers auslesen, inklusive URL & Title Tag und dies dann in einem Forum einfügen? Gegebenenfalls sogar auch noch für die verschiedenen Forenboards vom code angepasst?
Gruß Torsten aka ViewPix
P.S. Wir kennen uns ja schon länger ;-)
Das weiß ich nicht. Schau doch mal ins Autohotkeyforum, da gibts die richtigen Cracks, die dafür bestimmt ne Lösung haben. Aber die Forencodes kannst du dir ja aus dem Script ableiten. Dafür hab ich Autohotkey früher auch mal genutzt.
BTW: Was ist denn im nfac los? Forum wegen DSGVO geschlossen?
Nee, ist ja noch offen…
Wenn Du in das Forum über eine Verlinkung springen willst, musst Du händisch auf http wechseln ;-)
BTW: Das AHK Forum ist nicht so ergiebig für mich als Neuling. Der Deutsche Bereich ist etwas Steifmütterlich und im Englischen weiß ich nicht wo nach ich suchen soll…
Zum Beispiel zu suche ich eine simple Sache, wie kann ich den blinkenden Textcursor an eine bestimmte Stelle platzieren?
Gruß Torsten