Здравствуйте, shilnik, Вы писали:
S>Здравствуйте, Mr. None, Вы писали:
S>А можно поподробнее, желательно с примерами. Где конкретно эти функции вызывать. У меня серверная часть написана на VB6, клиентская на Delphi 7. Объект из клиента вызывается так:
Клиент (C++ Builder 6.0):
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoInitializeSecurity( 0, -1, 0, 0, RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IMPERSONATE, 0, EOAC_NONE, 0 );
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->Run();
}
catch(Exception &exception)
{
Application->ShowException(&exception);
}
}
Сервер (M$VC 7.0):
void CEvents::FireOnSomeEvent()
{
// Интерфейс клиентский обработчика
IClientEvents *eventObj = 0;
// Указатель на прокси клиента у меня храниться в GIT`е
m_spEvents.CopyTo(&eventObj);
HRESULT hRes = CoSetProxyBlanket( eventObj,
RPC_C_AUTHN_NONE,
RPC_C_AUTHZ_NONE,
0,
RPC_C_AUTHN_LEVEL_NONE,
RPC_C_IMP_LEVEL_IDENTIFY,
0,
EOAC_NONE );
hRes = eventObj->OnSomeEvent();
eventObj->Release();
}
FireOnAsyncOpen() вызывается на сервере, когда необходимо отправить клиенту сообщение
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.