Foto: Adam Ciesielski
Plugins sind externe Komponenten, die in ein Programm eingebunden werden können,
um dessen Funktionalität zu erweitern. Ziel war hier eine Klasse, die das
finden und einbinden von Plugins in die eigene Anwendung möglichst einfach macht.
Das Plugin muss als prozessinterner COM Server vorliegen, heißt, als DLL oder OCX.
Weiterhin muss es 1 Klasse besitzen, die ein bestimmtes Interface implementiert.
Dieses Interface muss vorher fest definiert worden sein, da an diesem das Plugin
identifiziert wird.
Oder wie man ein Interface definiert. Indem man ein neues DLL Projekt anlegt,
und alle Methoden, die ein Plugin anbieten soll, um in die eigene Anwendung
integriert werden zu können, reinschreibt. Allesamt ohne Code im Körper, natürlich.
Das Projekt wird kompiliert, und kann nun über ein Verweis und "Implements name_des_interface"
in das eigene Plugin implementiert werden.
Nun liegt das fertige Plugin im Unterordner "plugins", aber wie kommts denn
in die Anwendung, ganz ohne Early Binding und Prog ID? Zunächst durchsucht die Ladeklasse
den kompletten "plugins" Ordner nach Dateien mit bekannter Endung, also "*.dll" und "*.ocx".
Gefundene Dateien werden registriert und anschließend über die in ihnen enthaltene
Type Library nach einer Klasse durchsucht, die das abgemachte Plugin Interface implementiert.
Gefundene Klassen werden gespeichert und können später einfach über Ladeklasse.CreatePlugin(index)
erstellt werden. Dabei können Suchpfad, Dateifilter, rekursive Suche und Plugin Interface
selber definiert werden.
Download: Plugins