2017-02-07 3 views
0

Я пытаюсь написать программу на C#, которая либо запустит новый экземпляр Outlook, если ни один из них не запущен, или прикрепится к первому экземпляру, если он уже запущен.Как начать или подключиться к Outlook с помощью Interop C#?

Я нашел предыдущее обсуждение already, которое в значительной степени определяет то, что я пытаюсь достичь. Проблема с Microsoft Solution заключается в том, что некоторые из моих плагинов/надстроек Outlook не работают должным образом, например, iManage Filesite/Worksite. Плагин, кажется, находится на ленте при запуске Outlook, но некоторые функции отсутствуют, и если я пытаюсь выполнить поиск и т. Д. Outlook перестает отвечать на запросы и падает. Плагины работают должным образом, если внешний вид запускается из консоли или как:

System.Diagnostics.Process.Start(@"OUTLOOK.exe"); 

Но тогда я не могу подключиться к работающему экземпляру Outlook, потому что

application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application; 

Сбой с COM-ошибки (0x800401E3 MK_E_UNAVAILABLE). Я могу обойти эту ошибку только в том случае, если я отлажу приложение и пройду через него. Я попытался разрешить время для запуска Outlook, переключая активное окно (изменение фокуса), но ни один из этих параметров не работает.

+0

Удалите свои счета из Outlook. Очистите PST-файлы Outlook. Откройте Outlook в безопасном режиме. Добавьте свою учетную запись и дождитесь обновления всех папок. Закрыть и открыть Outlook. Повторите попытку повторить то же самое в вопросе. – Gokul

ответ

0

Сообщение об ошибке из GetActiveObject скорее всего означает, что ваш код и Outlook работают в разных контекстах безопасности. Убедитесь, что ни приложения (или оба) не работают с повышенными привилегиями (Run As Administrator).

+0

Я проверил в диспетчере задач, и оба они работают только с привилегиями пользователя –

+0

Они были бы даже если вы используете «Запуск от имени администратора». Как запускаются оба приложения? –

+0

Я тестировал запуск приложения с консоли (не admin) и из отладчика Visual Studio (не admin). Начиная с VS работает только в том случае, если я перехожу через строку GetActiveObject, иначе я получаю ошибку COM (вот почему я попытался переключить фокус окна) –

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