C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
OLE, обработка событий
juice
Отправлено: 30.06.2005, 17:16


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Работаю через OLE с Microsoft Outlook. Как установить обработчик некоего события ? Вроде как простая операция а у меня не получается wink.gif
Вот как пишу я:
CODE


void __fastcall myfunc(void)
{
}
...

oApp = CreateOleObject("outlook.application");
oNs  = oApp.OleFunction("GetNameSpace", "MAPI");
oNs.OlePropertyGet("SyncObjects").OleFunction("Item",1).OlePropertySet  ("SyncEnd", myfunc);

В ответ выдается ошибка EoleSysError — "Unknown name"
GIZMO
Отправлено: 06.07.2005, 12:21


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (juice @ 30/06/2005, 17:16)
Работаю через OLE с Microsoft Outlook. Как установить обработчик некоего события ? Вроде как простая операция а у меня не получается wink.gif
Вот как пишу я:
CODE


void __fastcall myfunc(void)
{
}
...

oApp = CreateOleObject("outlook.application");
oNs = oApp.OleFunction("GetNameSpace", "MAPI");
oNs.OlePropertyGet("SyncObjects").OleFunction("Item",1).OlePropertySet ("SyncEnd", myfunc);

В ответ выдается ошибка EoleSysError — "Unknown name"

События VCL и события в ОЛЕ не одно и тоже. Надо написать свой класс с реализацией IDispatch (можно воспользоваться ATL или VCL-овским TEventDispacther), затем запросить у сервера. IConnectionPointContainer найти IConnectionPoint и подкл. событию
если юзать ATL то достаточно вызвать AtlAdvise.

Вернуться в Технологии COM/DCOM, ActiveX