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

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

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

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

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

Увы, не помогает.
...
Рейтинг: 0 / 0
12.03.2018, 15:45
    #39613540
Stranger484
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
Ради интереса можно попробовать запустить Outlook от имени администратора, и попробовать воспроизвести ту ситуацию при которой возникает исключение. Запустить программу из того же Total commander-а.
...
Рейтинг: 0 / 0
12.03.2018, 16:16
    #39613587
Sinemurius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
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
12.03.2018, 16:38
    #39613615
Stranger484
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
UAC отключен? И все же, я предполагаю что Total выполняется с повышенными правами, это легко проверить если в заголовке окна написано имя текущего пользователя со знаком ^.
...
Рейтинг: 0 / 0
12.03.2018, 16:57
    #39613632
Sinemurius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
Stranger484UAC отключен? И все же, я предполагаю что Total выполняется с повышенными правами, это легко проверить если в заголовке окна написано имя текущего пользователя со знаком ^.

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

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

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

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

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

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

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

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

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


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

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


???

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

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

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

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

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

Process Monitor и/или Rohitab API monitor заюзай - посмотри, нет ли где ошибок доступа.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
31.07.2019, 14:15
    #39843499
mkr
mkr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
тоже затронул эту тему и выяснил то, что если из под той же 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
31.07.2019, 14:35
    #39843514
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
часто видел такой код (и аналогично для Word.Application и Excel.Application)

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

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


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