|
|
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Добрый день. Никак не могу разобраться с совершенно бредовой на мой взгляд ситуацией. Windows 10 64 Outlook 2013. Outlook открыт. При попытке открыть Outlook OLE сервер в строке OutlookApp := GetActiveOleObject('Outlook.Application'); возникает исключение типа EOleSysError с текстом сообщения "Операция недоступна" Что самое странное: исключение возникает только в том случае, если скомпилированное приложение вызывается из другого приложения. То есть из среды Delphi программа работает без проблем. Если вызвать скомпилированное приложение из пункта меню Windows, или из проводника, то также работает нормально. Но если оно запускается к примеру из Total commander-а, то возникает вышеприведенное исключение. К сожалению, архитектура программного обеспечения, с которым я работаю, предполагает, что приложение, отправляющее почту вызывается из другого приложения. И этого мне не изменить. Пользователь входит в группу администраторов. По результатам поиска в интернете: 1. дал своему пользователю права запускаться как сервис 2. Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM -> Microsoft Outlook -> Свойства -> Удостоверение -> Текущий пользователь. 3. Также поигрался с политиками безопасности. В общем ничего не получается. На мой взгляд ситуация совершенно абсурдная, но из-за нее не могу решить вроде бы незначительную проблему. Заранее большое спасибо, если кто откликнется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:14 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Вангую, что Тотал запущен с правами администратора, и соответственно программа из него запускается тоже с правами администратора, а Outlook запущен без администраторских прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:29 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Увы, нет. На самом деле, и программа, из которой вызывается пользователь, и TC, запускаются под пользователем. Пробовал я также запустить прогу под администратором. Увы, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:31 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Ради интереса можно попробовать запустить Outlook от имени администратора, и попробовать воспроизвести ту ситуацию при которой возникает исключение. Запустить программу из того же Total commander-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:45 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:16 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
UAC отключен? И все же, я предполагаю что Total выполняется с повышенными правами, это легко проверить если в заголовке окна написано имя текущего пользователя со знаком ^. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:38 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Stranger484UAC отключен? И все же, я предполагаю что Total выполняется с повышенными правами, это легко проверить если в заголовке окна написано имя текущего пользователя со знаком ^. Да, похоже Вы оказались правы. Попробовал запускать outlook из меню выполнить, а прогу из far-а (и наоборот). Все работает. Хотя, ТС я запускал из меню "Выполнить" и совершенно точно не с повышенными правами. Блин, потратил кучу времени из-за фигни. Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:57 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Увы, я рано обрадовался. Ситуация в общем та же. Вот только из под far-а почему то работает. Но если outlook.exe запустить под администратором, то все работает, даже если прога запущена из любой другой проги, включая TC. Проблема в том, что для меня это в общем-то не решение. Я не смогу заставить пользователей запускать outlook из под администратора. Может есть еще какие-то настройки безопасности, политики ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 09:16 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Встречался с ситуацией, когда программа, скомпилированная в Дельфи, и запущенная из Тотал Командера, работала неверно. В частности, неправильно перечисляла установленные в системе OLEDB-провайдеры. При запуске же из проводника Windows, список провайдеров возвращался верно. Глубоко не копал, в чём причина, просто заметил, что Environment Variables отличаются у процессов, запущенного из ТС, и из проводника. Увидеть переменные окружения процесса можно Process Explorer-ом (SysInternals). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 09:42 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Uridianпрограмма, скомпилированная в Дельфи, и запущенная из Тотал Командера, работала неверно. В частности, неправильно перечисляла установленные в системе OLEDB-провайдеры. При запуске же из проводника Windows, список провайдеров возвращался верноВ топку тотал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 10:48 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
YuRockUridianпрограмма, скомпилированная в Дельфи, и запущенная из Тотал Командера, работала неверно. В частности, неправильно перечисляла установленные в системе OLEDB-провайдеры. При запуске же из проводника Windows, список провайдеров возвращался верноВ топку тотал :) Да в топку, то в топку, но проблема увы не только с Total :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 11:42 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
SinemuriusДа в топку, то в топку, но проблема увы не только с Total :( А что ты хочешь от аутлука? Может, я пропустил - тогда извиняюсь. Этот оле, как по мне, есть смысл использовать для импорта почты (в свою систему). Примерно один раз. Для этого можно и админправа запросить и запустить под ними аутлук - ничего страшного в этом я не вижу. Может он просто не предназначен для другого, да и не должен. Это ж не вордексель. Впрочем, я не в теме. Может, если начать копошиться в аутлуке через оле, то жизнь и станет проще, не знаю. У меня и аутлука-то нет и не было никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 12:06 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Sinemurius, процесс монитор включал уже? может какие-то концы найдутся случайно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 12:06 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Может стоит заменить Sinemurius Код: pascal 1. на Код: pascal 1. ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 16:25 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Может стоит заменить Sinemurius Код: pascal 1. на Код: pascal 1. ??? CreateOleObject('Outlook.Application') вызывает исключение, если Outlook уже открыт. В общем,очевидно, что проблемы связаны с какими то фишками безопасности Windows, UAC -ами, настройками DCOM и прочим... Я даже не исключаю, что это какой-то неустранимый косяк Win10. Также, есть вероятность, что у меня какая то неправильно установленная винда. Попробую завтра это проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 16:51 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Sinemurius, DCOM сам по себе та еще штука. Кровушки, насколько я знаю, бывает пьёт. Может как раз и твой случай в это питие входит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 16:56 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Sinemurius, авторCreateOleObject('Outlook.Application') вызывает исключение, если Outlook уже открыт. При открытом Outlook нужно использовать GetActiveOleObject, иначе будет эксепшин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 18:32 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
OleInitialize(nil); делаешь перед этой функцией, а в конце OleUnInitialize; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 10:04 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Sinemurius, посмотри свойства Тотала или его ярлыка. Не включен ли там режим совместимости, нет ли галки для админа. Текущую папку ещё можно проверить. Process Monitor и/или Rohitab API monitor заюзай - посмотри, нет ли где ошибок доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 17:14 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
тоже затронул эту тему и выяснил то, что если из под той же Delphi запустить Outlook Код: pascal 1. 2. 3. 4. 5. 6. далее, тоже из под Delphi, компилируем и запускаем другой проект с кодом Код: pascal 1. и только в этом случае работает GetActiveOleObject! как сделать чтобы оно работало в других случаях - большой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 14:15 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
часто видел такой код (и аналогично для Word.Application и Excel.Application) Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 14:35 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, это само собой разумеющееся. вопрос в том, что OutlookApp := GetActiveOleObject('Outlook.Application'); работает исключительно в том случае, когда они были запущены из "одного и того же контектса". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 15:13 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
mkrвопрос в том, что OutlookApp := GetActiveOleObject('Outlook.Application'); работает исключительно в том случае, когда они были запущены из "одного и того же контектса".Что логично. Вопрос в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 16:02 |
|
||
|
Абсурдная ошибка GetActiveOleObject('Outlook.Application')
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, вопрос в том, как мне запустить outlook в том же контексте, что и моё приложением (или наоборот)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 17:31 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39843514&tid=2039190]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 519ms |

| 0 / 0 |
