Zitat von
Spider:
das soll jetzt kein Push sein, ich hab was neues rausgefunden.
Und zwar liegt es daran, das ich iPlg nach dem hinzufügen auf nil setze. Wenn ich die Zeile auskommentiere mit dem iPlg := nil; bekomme ich bei FreeLibrary eine Zugriffverletzung.
Ich hab das nun so gelöst, dass ich die hDll public gemacht hab und immer wieder über die hDll neue PlugIns lade und erst im Form.Destroy FreeLibrary(hDll) ausführe. Ich denke das ich zwar nicht sehr sauber, aber bis ich eine andere Lösung habe, wohl das beste...
Die saubere Lösung:
1.) du definierst eine
Komponenten Kategorie (hat nichts mit Delphi Komponenten zu tun)
mit der function CreateComponentCategory
2.) beim Registrieren der
ActiveX DLL werden die CoClass in diese Katergorie registriert
3.) deine Anwendung braucht die PlugIn
DLL nicht auf der Platte zu suchen, sondern fragt die
Liste deiner Komponenten Kategorie ab. (function GetCategoryCLSIDList)
4.) mit dieser Liste lassen sich die PlugIn Interfaces dynamisch erzeugen.