Re[3]: DCOM & Windows 98
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 13.04.04 03:53
Оценка:
Здравствуйте, 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() вызывается на сервере, когда необходимо отправить клиенту сообщение
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.