powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Абсурдная ошибка GetActiveOleObject('Outlook.Application')
25 сообщений из 36, страница 1 из 2
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613513
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Никак не могу разобраться с совершенно бредовой на мой взгляд ситуацией.

Windows 10 64
Outlook 2013.

Outlook открыт.

При попытке открыть Outlook OLE сервер в строке
OutlookApp := GetActiveOleObject('Outlook.Application');
возникает исключение типа EOleSysError с текстом сообщения "Операция недоступна"

Что самое странное: исключение возникает только в том случае, если скомпилированное приложение вызывается из другого приложения.

То есть из среды Delphi программа работает без проблем. Если вызвать скомпилированное приложение из пункта меню Windows, или из проводника, то также работает нормально.

Но если оно запускается к примеру из Total commander-а, то возникает вышеприведенное исключение.

К сожалению, архитектура программного обеспечения, с которым я работаю, предполагает, что приложение, отправляющее почту вызывается из другого приложения. И этого мне не изменить.

Пользователь входит в группу администраторов.

По результатам поиска в интернете:
1. дал своему пользователю права запускаться как сервис
2. Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM -> Microsoft Outlook -> Свойства -> Удостоверение -> Текущий пользователь.
3. Также поигрался с политиками безопасности.

В общем ничего не получается. На мой взгляд ситуация совершенно абсурдная, но из-за нее не могу решить вроде бы незначительную проблему.

Заранее большое спасибо, если кто откликнется.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613526
Stranger484
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вангую, что Тотал запущен с правами администратора, и соответственно программа из него запускается тоже с правами администратора, а Outlook запущен без администраторских прав.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613528
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, нет.

На самом деле, и программа, из которой вызывается пользователь, и TC, запускаются под пользователем.

Пробовал я также запустить прогу под администратором.

Увы, не помогает.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613540
Stranger484
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ради интереса можно попробовать запустить Outlook от имени администратора, и попробовать воспроизвести ту ситуацию при которой возникает исключение. Запустить программу из того же Total commander-а.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613587
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stranger484Ради интереса можно попробовать запустить Outlook от имени администратора, и попробовать воспроизвести ту ситуацию при которой возникает исключение. Запустить программу из того же Total commander-а.

Пока проверял Ваше предположение, столкнулся с еще более забавной ситуацией.

1. Запускаю c:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE из пункта "Выполнить"
Запускаю свою программу из пункта "Выполнить": все работает.
Запускаю свою программу из Total commander-а: взрывается

2. Запускаю c:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE из Total Commander-а
Запускаю свою программу из пункта "Выполнить": взрывается.
Запускаю свою программу из Total commander-а: все работает

То есть, и программа и Outlook должны быть запущены одинаково !!!

При этом, не имеет значения: запускается программа и Outlook под администратором или под пользователем.

Что-то microsoft перемудрил с UAC
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613615
Stranger484
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UAC отключен? И все же, я предполагаю что Total выполняется с повышенными правами, это легко проверить если в заголовке окна написано имя текущего пользователя со знаком ^.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613632
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stranger484UAC отключен? И все же, я предполагаю что Total выполняется с повышенными правами, это легко проверить если в заголовке окна написано имя текущего пользователя со знаком ^.

Да, похоже Вы оказались правы.

Попробовал запускать outlook из меню выполнить, а прогу из far-а (и наоборот). Все работает.
Хотя, ТС я запускал из меню "Выполнить" и совершенно точно не с повышенными правами.
Блин, потратил кучу времени из-за фигни.

Большое спасибо.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613912
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, я рано обрадовался.
Ситуация в общем та же. Вот только из под far-а почему то работает.

Но если outlook.exe запустить под администратором, то все работает, даже если прога запущена из любой другой проги, включая TC.

Проблема в том, что для меня это в общем-то не решение. Я не смогу заставить пользователей запускать outlook из под администратора.

Может есть еще какие-то настройки безопасности, политики ?
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613926
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Встречался с ситуацией, когда программа, скомпилированная в Дельфи, и запущенная из Тотал Командера, работала неверно. В частности, неправильно перечисляла установленные в системе OLEDB-провайдеры. При запуске же из проводника Windows, список провайдеров возвращался верно.
Глубоко не копал, в чём причина, просто заметил, что Environment Variables отличаются у процессов, запущенного из ТС, и из проводника. Увидеть переменные окружения процесса можно Process Explorer-ом (SysInternals).
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39613967
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Uridianпрограмма, скомпилированная в Дельфи, и запущенная из Тотал Командера, работала неверно. В частности, неправильно перечисляла установленные в системе OLEDB-провайдеры. При запуске же из проводника Windows, список провайдеров возвращался верноВ топку тотал :)
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614017
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockUridianпрограмма, скомпилированная в Дельфи, и запущенная из Тотал Командера, работала неверно. В частности, неправильно перечисляла установленные в системе OLEDB-провайдеры. При запуске же из проводника Windows, список провайдеров возвращался верноВ топку тотал :)

Да в топку, то в топку, но проблема увы не только с Total :(
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614036
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SinemuriusДа в топку, то в топку, но проблема увы не только с Total :(
А что ты хочешь от аутлука? Может, я пропустил - тогда извиняюсь.
Этот оле, как по мне, есть смысл использовать для импорта почты (в свою систему). Примерно один раз. Для этого можно и админправа запросить и запустить под ними аутлук - ничего страшного в этом я не вижу.
Может он просто не предназначен для другого, да и не должен. Это ж не вордексель.
Впрочем, я не в теме. Может, если начать копошиться в аутлуке через оле, то жизнь и станет проще, не знаю. У меня и аутлука-то нет и не было никогда.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614037
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sinemurius,

процесс монитор включал уже? может какие-то концы найдутся случайно.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614208
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может стоит заменить
Sinemurius
Код: pascal
1.
OutlookApp := GetActiveOleObject('Outlook.Application');

на
Код: pascal
1.
OutlookApp := CreateOleObject('Outlook.Application');


???
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614232
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Может стоит заменить
Sinemurius
Код: pascal
1.
OutlookApp := GetActiveOleObject('Outlook.Application');

на
Код: pascal
1.
OutlookApp := CreateOleObject('Outlook.Application');


???

CreateOleObject('Outlook.Application') вызывает исключение, если Outlook уже открыт.

В общем,очевидно, что проблемы связаны с какими то фишками безопасности Windows, UAC -ами, настройками DCOM и прочим...

Я даже не исключаю, что это какой-то неустранимый косяк Win10.
Также, есть вероятность, что у меня какая то неправильно установленная винда. Попробую завтра это проверить.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614244
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sinemurius,

DCOM сам по себе та еще штука. Кровушки, насколько я знаю, бывает пьёт. Может как раз и твой случай в это питие входит.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39614312
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sinemurius,
авторCreateOleObject('Outlook.Application') вызывает исключение, если Outlook уже открыт.
При открытом Outlook нужно использовать GetActiveOleObject, иначе будет эксепшин.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39617263
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OleInitialize(nil);
делаешь перед этой функцией, а в конце OleUnInitialize;
?
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39617709
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sinemurius, посмотри свойства Тотала или его ярлыка. Не включен ли там режим совместимости, нет ли галки для админа.

Текущую папку ещё можно проверить.

Process Monitor и/или Rohitab API monitor заюзай - посмотри, нет ли где ошибок доступа.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39843499
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже затронул эту тему и выяснил то, что если из под той же Delphi запустить Outlook
Код: pascal
1.
2.
3.
4.
5.
6.
  OutlookApp := CreateOleObject(scxOutlookApp);

  NameSpace := OutlookApp.GetNamespace(scxNameSpace);
  FNameSpace.Logon('', '', False, False);
  Folder := FNameSpace.GetDefaultFolder(olFolderInbox);
  Folder.Display;



далее, тоже из под Delphi, компилируем и запускаем другой проект с кодом
Код: pascal
1.
  OutlookApp := GetActiveOleObject(scxOutlookApp);



и только в этом случае работает GetActiveOleObject!

как сделать чтобы оно работало в других случаях - большой вопрос.
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39843514
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
часто видел такой код (и аналогично для Word.Application и Excel.Application)

Код: pascal
1.
2.
3.
4.
5.
  try
     OutlookApp := GetActiveOleObject('Outlook.Application');
  except
     OutlookApp := CreateOleObject('Outlook.Application');
  end;
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39843537
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,
это само собой разумеющееся.
вопрос в том, что OutlookApp := GetActiveOleObject('Outlook.Application'); работает исключительно в том случае, когда они были запущены из "одного и того же контектса".
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39843562
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkrвопрос в том, что OutlookApp := GetActiveOleObject('Outlook.Application'); работает исключительно в том случае, когда они были запущены из "одного и того же контектса".Что логично. Вопрос в чем?
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39843620
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

вопрос в том, как мне запустить outlook в том же контексте, что и моё приложением (или наоборот)?
...
Рейтинг: 0 / 0
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
    #39843650
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно же вызвав CreateOleObject
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Абсурдная ошибка GetActiveOleObject('Outlook.Application')
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]