-
Спасибо, но если запущен Outlook , то и не надо ни каких ухищрений и так все работает и при ckRunningOrNew. А ConnectKind = ckRunningInstance при AutoConnect = False не имеет смысла Вобщем это плохое решение, так как надо самому запускать Outlook и объяснять это пользователю.(?????) Надо чтобы работало только из проги через OLE сервер.
-
А я вот вообще не использую компоненты вроде TOutlookApplication. Вместо этого делаю как-то так:
try Outlook := GetActiveOleObject('Outlook.Application') ; except Outlook := CreateOleObject('Outlook.Application') ; end;
Если Outlook стартован, будет получена ссылка на него. Если нет - он будет стартован и будет получена ссылка на него.
-
Спасибо. И что при этом не будет того эффекта ( то есть выгрузка процесса после закрытия окна Outlook "Контакты"? Почитайте историю писем.
-
Я читал переписку. Я не знаю. Просто у меня возникло предположение, что компонент TOutlookApplication всегда создает новый экземпляр сервера аутлук, если использовать свойство AutoConnect := True. К сожалению, у меня нет исхзодных текстов этого компонента, чтобы залезть и посмотреть, как там все организовано. Но я вот что думаю. Так как в списке методов я вижу метод ConnectTo(), следовательно, должна существовать возможность подключиться к уже имеющемуся экземпляру сервера автоматизации. Нужно, ИМХО, выяснить, зачем этот метод и как его задействовать.
-
Спасибо. экземпляр сервера аутлук создается в моей проге один раз при запуске и я с ним работаю до выхода из программы. ns := OutlookApplication1.GetNamespace(WideString('MAPI')); где ns: NameSpace; // глабальная область видимости
Но если я запускаю от себя окно Контакта Outlook посредством функции contitem.Display(false) и потом его закрываю, то процесс "Outlook.exe" выгружается, а мне надо продолжать работу с сервером.
|