Пабло » 24 окт 2007, 10:30
На мой взгляд удобней всего сделать так.
Каждый плагин должен реализовывать интерфейс, допустим IPlugin с двумя функциями
IPlugin.Load(Owner:IUnknown);
IPlugin.Unload;
в ini файле прописать CLSID(ClassID - идентификатор класса) загружаемых плагинов.
При старте системы создавать указанные в ini COM объекты, запрашивать у них интерфейс IPlugin и вызывать метод Load(). В метод Load можно передать:
1) Специальный интерфейс с помощью которого плагин может организовывать работу с системой. (это первый вариант с ограниченным доступом)
2) Интерфейс на саму систему(если таковой имеется конечно), с помощью которого можно управлять системой. (это второй вариант с полным доступом к системе)
При закрытии системы вызывать метод UnLoad в котором необходимо будет отпустить все интерфейсы на систему.
На мой взгляд удобней всего сделать так.
Каждый плагин должен реализовывать интерфейс, допустим IPlugin с двумя функциями
IPlugin.Load(Owner:IUnknown);
IPlugin.Unload;
в ini файле прописать CLSID(ClassID - идентификатор класса) загружаемых плагинов.
При старте системы создавать указанные в ini COM объекты, запрашивать у них интерфейс IPlugin и вызывать метод Load(). В метод Load можно передать:
1) Специальный интерфейс с помощью которого плагин может организовывать работу с системой. (это первый вариант с ограниченным доступом)
2) Интерфейс на саму систему(если таковой имеется конечно), с помощью которого можно управлять системой. (это второй вариант с полным доступом к системе)
При закрытии системы вызывать метод UnLoad в котором необходимо будет отпустить все интерфейсы на систему.