Plugin-Schnittstellen-Dokumentation
AT HTML Editor 32 - Hilfe
Beschreibung der Plugin-Schnittstelle
Einleitung
Mit dieser Plugin-Schnittstelle habe ich etwas fabriziert, was eigentlich so gar nicht geht
(wenn man den vielen Newsgroups und "Experten" glauben schenken will). AT HTML Editor 32
ist ein reines in Visual Basic programmiertes Programm. Dennoch dachte ich mir, daß eine
Erweiterung mit selbstprogrammierten Komponenten durch den Benutzer sinnvoll wäre, so, wie
es auch andere Programme ermöglichen. Ich hatte verschiedene Konzepte entwickelt, so u.a.
auch eine Variante reiner textbasierender Plugins, die auch der erstellen kann, der nicht
der DLL-Programmierung mächtig wäre. Dennoch habe ich mich für ein DLL-basierendes Interface
entschieden, weil zum einen u.a. auch ein textbasierendes Plugin aufgesetzt werden kann und
zum anderen die Implementierbarkeit von weiterer (beliebiger) Funktionalität DLL-basierend
wesentlich besser möglich und flexibler ist. Also habe ich meinem VB-Programm ein flexibles
Plug-Interface spendiert, daß ganz "normale" DLLs dynamisch (!) zur Laufzeit lädt und entlädt.
Und somit habe ich Visual Basic mit Delphi- und/oder C++-DLLs verheiratet. Dagegen funktionieren
ActiveX-DLLs mit diesem Interface nicht. PureBasic-DLLs funktionieren nur eingeschränkt bzw.
erlauben nur den Aufruf ohne Datenübergabe.
Mögliche Probleme
Die Tatsache, daß ich hier ein Visual-Basic-Programm mit einer Plugin-Schnittstelle zum
dynamischen Anbinden von DLLs versehen habe, birgt einige Probleme in sich. Insbesondere,
was die Übergabe von Text aus einem Plugin
heraus in einen Code-Editor betrifft. VB hat nicht ein so ausgefeiltes Speicher-Management
wie z.B. Delphi oder C++. Werden Zeichenmengen von mehr als 1200 Zeichen (1200 Byte) vom
Plugin zurückgegeben, kann das zum Absturz führen. Aber es ist auch möglich, daß das erst
bei Mengen von mehr als 10000 Zeichen (10000 Byte) passiert. Das scheint von System zu System
unterschiedlich zu sein, deshalb habe ich mich entschlossen, die Zeichenmenge nicht zu
begrenzen.
Desweiteren kann es zu Schwierigkeiten bei der Übergabe von Dateinamen aus einem Plugin kommen,
die dann von AT HTML Editor 32 geöffnet werden soll. Kurze Dateinamen führen öfter zu diesen
Schwierigkeiten als lange Dateinamen. Aber auch hier war das von System zu System unterschiedlich.
Wohlgemerkt, diese Probleme sind nicht in erster Linie fehlerhafte Programmierung, sondern
auf das Verhalten von VB-Programmen zu Delphi- oder anderen Programmen zurückzuführen, weil
ich hier ein VB-Programm mit Delphi- und anderen Programmen quasi "verheiratet" habe.
Architektur
Jeder wird dafür Verständnis haben, daß ich hier nicht alle technische Einzelheiten darlegen
werde. Das würde auch den Rahmen sprengen, zumal diese Informationen auch gar nicht notwendig
wären zum Schreiben eigener Plugins. Dennoch soll hier kurz das Konzept der Architektur
angesprochen werden, um Entwicklern das Verständnis zu erleichtern.
Zwei Dinge sind wichtig für das Funktionieren:
1. AT HTML Editor sucht alle Plugins (ob EXE oder DLL) im Unterverzeichnis "plugins".
2. Das Geheimnis der dynamischen DLL-Anbindung steckt zum Teil in der pluginwrapper.dll
im Programmverzeichnis.
Dadurch, daß die Plugin-Schnittstelle teilweise selbst ein Plugin ist, kann sie jederzeit
geupdatet werden, ohne AT HTML Editor 32 erneut anpassen zu müssen. Wenn man so will,
ist auch hier das seit AT HTML Editor 32.3 umgesetzte modulare Konzept der Komponenten
konsequent angewandt.
Rückgabetypen
Die Plugin-Schnittstelle kennt 4 Rückgabetypen.
1. Markierter Text zum Plugin
Hiermit wird der im Code-Editor markierte Text an das Plugin zur weiteren Bearbeitung übergeben
ohne daß das Plugin diesen Text wieder zurück gibt. Das ist z.B. dann sinnvoll, wenn der Text
anderweitig weiterverarbeitet werden soll.
2. Markierter Text zum/vom Plugin
Hiermit wird der im Code-Editor markierte Text an das Plugin zur weiteren Bearbeitung übergeben.
Nach Bearbeitung durch das Plugin erfolgt eine Rückgabe des bearbeiteten Textes. Dieser ersetzt
dann den im Code-Editor markierten Text. Ist kein Text markiert, wird der Text aus dem Plugin
an der Cursorposition zusätzlich im Code-Editor eingefügt. Das ist dann nützlich, wenn z.B. per Plugin
eine Tabelle oder Frameset generiert werden soll.
3. Dateiname zum Plugin
Hier wird lediglich der Dateiname des aktuellen Code-Editors an das Plugin übergeben. Das ist z.B.
dann nützlich, wenn man eine bearbeitete Datei mit einem kleinen FTP-Uploader automatisch
schnell mal in das FTP-Verzeichnis "schieben" möchte. Auch wäre denkbar, hiermit einen kleinen
externen Debugger oder Syntaxchecker zu realisieren.
4. Dateiname vom Plugin
Hiermit ergibt sich die Möglichkeit, z.B. aus einem externen Dateimanager oder FTP-Downloader
schnell die übergebene Datei in AT HTML Editor 32 zur Bearbeitung zu öffnen.
Ein Plugin für AT HTML Editor 32.3 schreiben
Am besten läßt sich das anhand von praktischen Beispielen erklären. Im nachfolgenden wird
jeder Rückgabtyp als Delphi-Code gezeigt. Im Code selber sind genügend ausreichend
Erklärungen, die jedem versierten Programmierer genügen sollten. Besteht trotzdem noch weiterer
Erklärungsbedarf, dann entweder auf die
Homepage von AT HTML Editor 32 schauen oder mich einfach per
E-Mail kontaktieren.
1. Markierter Text zum Plugin
2. Markierter Text zum/vom Plugin
3. Dateiname zum Plugin
4. Dateiname vom Plugin
Damit Plugins auch ganz gefahrlos außerhalb von AT HTML Editor 32.3 getestet werden können,
gibt es auf der Homepage von AT HTML Editor 32
einen Plugin-Tester, mit dem das selbstentwickelte Plugin eben getestet werden kann. Der Plugin-Tester
ist ebenfalls ein VB-Programm mit zum AT HTML Editor 32.3 identischer Plugin-Schnittstelle.
Ersteller: Andreas Theusner © 2004
Letzte Bearbeitung: 08.12.2014