2015-01-16 4 views
0

Проблема, с которой я сталкиваюсь, уже описана в Getting/Creating an Outlook Application in Windows 7, но мне было очень трудно определить источник проблемы, потому что я оказался поддерживая в то же время старое приложение VB6, и ошибки, о которых сообщается в приложениях VB6, не упоминаются в этой статье. Кроме того, я ищу лучшие решения.CreateObject в Outlook.Application не работает в Outlook 2010, когда Outlook работает под другой учетной записью

Проблема заключается в том, что ошибки CreateObject("Outlook.Application") и GetObject(,"Outlook.Application") с ошибкой 429 - компонент ActiveX не может создать объект, особенно в Windows 7. Источником проблемы является то, что если Outlook уже работает под обычной учетной записью пользователя и приложение работает как администратор (не неслыханно для старых 32-разрядных приложений, работающих под управлением Windows 7) хочет получить доступ к Outlook, запрос на интерфейс COM Outlook зависает в течение 30 секунд, а затем сбой. Похоже, что это связано с тем, что запрашиваемый экземпляр Outlook и уже запущенный экземпляр Outlook используют разные учетные записи пользователей или привилегии.

Было бы хорошо, прежде всего, сообщить о лучшей ошибке, и если бы это можно было сообщить быстрее. Обычно приложение зависает в течение 30 секунд, прежде чем сообщать об ошибке. Итак, первый вопрос: есть ли способ обнаружить это условие, не дожидаясь 30 секунд?

Далее, есть ли способ обойти эту ошибку, поэтому нам не нужно беспокоиться о том, что Outlook может работать под разными учетными данными, когда мы хотим получить доступ к API Outlook? Одна мысль заключается в отключении UAC, так что старое 32-битное приложение с меньшей вероятностью должно запускаться как администратор. Есть ли лучшее решение?

+0

Я использую 'FindWindow (" rctrl_renwnd32 ", vbNullString) <> 0', чтобы проверить, работает ли Outlook. Если это так и 'CreateObject' терпит неудачу, то довольно правдоподобно, что существует несоответствие уровня целостности. – wqw

+0

Это не намного лучше, если предположить, что сбой CreateObject является результатом этой проблемы, независимо от результата FindWindow. Он по-прежнему влечет за собой 30-секундную задержку. – BlueMonkMN

+0

Нет другого пути. –

ответ

1

Я предполагаю, что вы «в решить эти настройки уже, но только в том случае, я была таким же proble и решения для меня было прекратить действие procces outlook.exe с API, а затем сделать„CreateObject“

вас может сделать то, что находится рядом: если err.number = 429, то terminateprocces («outlook.exe») «и можно найти код функции на Интенет резюме конец, если

0

Я решил эту проблему путем установки VB6 приложение локально, а не на сетевом диске. Устранение задержек Как администратор в свойствах ярлыков, возможно, помог.

Смежные вопросы