Douser, В общем примерно все понятно...
примерно...
Тока вот следущее-->
Добавим в наш элемент SamplePlugin два метода связи с Zulu: ConnectZuluPlugin и DisconnectZuluPlugin. Откроем редактор библиотеки типов (меню View | Type Library) и добавим методы в интерфейс ISamplePlugin:
function ConnectZuluPlugin( Conn: IUnknown): Integer;
------
> С этим проболем нету..
-------
и
procedure DisconnectZuluPlugin;
>> так как с сишнике нет процедур то это тоже стало функцией
-------
Параметр метода ConnectZuluPlugin - объект связи с Zulu, IPluginConnector. Для получения доступа к нему просто запросим этот интерфейс у Conn и сохраним в переменной FConnector:
Conn.QueryInterface( IID_IPluginConnector, FConnector);
В дальнейшем этот объект освободим в методе DisconnectZuluPlugin:
FConnector := nil;
-------
ВОт тут начинаются вопросы - где это сделать в самой программе или где ?
-----
Далее добавим метод, который будет выполняться при команды при вызове команды модуля из Zulu. Назовем этот метод PluginMethod1. Т.о. метод будет выглядеть как:
function PluginMethod1: Integer;
-----
это тоже все вроде понятно..
-----
Далее если в реестре писать ключь у Commands -> Open то он почему то перестает видеть это в плагинах (у зулу)....
Если делаю вместо Open, ShowForm (как в вашем примере) то все нормально ...
Это вообще важно или нет .....
Далее привызове модуля из зулу она выдает следущее: Внутренняя ошибка приложения..
может чем нибуть поможите ?
Да и еще... в вашем примере в тексте программы есть такое:
// Dmitry Oseroff:
STDMETHODIMP TPluginFormImpl::DisconnectZuluPlugin()
{
try
{
m_VclCtl->OnDisconnect();
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IPluginForm);
}
return S_OK;
};
// Dmitry Oseroff:
STDMETHODIMP TPluginFormImpl::OnZuluEvent(long nEventID, LPUNKNOWN Source,
VARIANT Param1, VARIANT Param2, VARIANT Param3, VARIANT_BOOL* RetVal)
{
try
{
if( m_VclCtl->OnZuluEvent( nEventID, Source,
*(VARIANT*)&Param1, *(VARIANT*)&Param2, *(VARIANT*)&Param3) )
*RetVal = VARIANT_TRUE;
else
*RetVal = VARIANT_FALSE;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IPluginForm);
}
return S_OK;
};
Это добавляется в ручную или как то еще ?
если в ручную - то выдает ошибку...