|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Интерфейс Плагин<->Программа
Занимаюсь внедрением плагинов, возникла необходимость в организации интерфейса между плагином и программой, наподобии интерфейса в QIP Infium. Не могу понять алгоритм инициализации плагина...Плагин должен привязываться к своему сервису плагинов в главной программе...в общем нужна помощь
Вот тут SDK QIP'а Помогите плиз... |
#2
|
||||
|
||||
Неужели никто не знает??? Эт очень важно!!!
|
#3
|
|||
|
|||
В чем проблема?
1. Ищете в папке плагинов файлы с расширением dll 2. Вызываете процедуру (должна быть во всех плагинах) возвращающую информацию о плагине и производящую первоначальную инициализацию. 3. Добавляете полученную инфу в самой программе в список плагинов. |
#4
|
||||
|
||||
Если кратко:
Qip загружает dll с твоим плагином и найдя в ней функцию CreateInfiumPLUGIN, вызывает ее при этом он передает тебе интерфейс для связи с сервером - PluginService: IQIPPluginService а ты ему свой интерфейс - типа IQIPPlugin для того чтобы работал твой интерфейс из двух функций предварительно создается объект класса TQipPlugin.Create(PluginService) сервер видит только твой интерфейс PHP код:
в общемто все кроме инициализации, описаний интерфейсов и констант можешь менять когда ты хочешь чтото сообщить или получить от сервера то используешь его интерфейс PHP код:
PHP код:
В общем гдето так удачи |
#5
|
||||
|
||||
2 s0Creator:
Как делать плагины к квипу я знаю. Я не знаю как организовать подобное в своей проге. При вызове функции CreateInfiumPLUGIN в нее передается IQIPPluginService, который изначально равен nil, поэтому вылетает ошибка access violation...К тому же возвращается значение типа IQIPPlugin...Поэтому я не знаю, как инициализировать плагин Последний раз редактировалось KOOL, 01.03.2008 в 12:25. |
#6
|
||||
|
||||
А ты не заметил как dll передает свой интерфейс
PHP код:
чтоб его передать необходимо создать интерфейсный объект я вообще делал это так: PHP код:
|
#7
|
||||
|
||||
Мда...учиться, учиться и учиться....Спасибо за наставление на истинный путь)))
|
#8
|
||||
|
||||
Проблемыыы.... Не получается создать класс интерфейсного объекта...По идее в нем должны быть те же процедуры, что и в интерфейсе + свои..но компилятор на этом участке ругается на недекларированную процедуру:
Код:
unit PPlugin ... IPluginService = interface procedure OnPluginMessage(var PlugMsg: TPPluginMessage); stdcall; end; pIPluginService = ^IPluginService; ... --------------------------------------------- //основная программа ... type TPluginService = class(TInterfacedObject, IPluginService);//Вот тут ошибка [Error] PlaylistForm.pas(3893): Undeclared identifier: 'OnPluginMessage' public procedure OnPluginMessage(var PlugMsg: TPPluginMessage); stdcall; end; pTPluginService = ^TPluginService; procedure TPluginService.OnPluginMessage(var PlugMsg: TPPluginMessage); begin //... end; ... Последний раз редактировалось KOOL, 03.03.2008 в 20:37. |