C # Outlook - Пользователь выходит - PullRequest
0 голосов
/ 07 декабря 2009

Мы пишем приложение для синхронизации контактов для Outlook, используя .Net 3.0. Мы используем "библиотеку объектов Microsoft Outlook 12.0" или Microsoft.Office.Interop.Outlook;

Мы замечаем, когда звоним:

ApplicationClass app = new Microsoft.Office.Interop.Outlook.ApplicationClass();

Он запустит Outlook, если пользователь не открыл его. Но если пользователь закрывает Outlook, когда наше приложение открыто, мы получим COMException при следующем обращении к экземпляру Outlook ApplicationClass.

Как мы можем компенсировать это поведение? Мы не хотим повторно открывать Outlook, если получим это исключение.

Мы бы предпочли, чтобы Outlook вообще не запускался или был скрыт, но мы хотим, чтобы пользователь мог использовать Outlook, даже если наше приложение открыто.

Мы могли бы также каким-то образом подключиться к событию ApplicationExit или к чему-то, но если мы создадим новый ApplicationClass в этот момент, запустится ли он снова Outlook?

Как мы можем это исправить?

Ответы [ 3 ]

2 голосов
/ 07 декабря 2009

Я согласен с Адамом, но вместо того, чтобы перехватить исключение, вам нужно подключиться к событию process.exit, а затем воссоздать ваш объект. Это запустит новый экземпляр перспективы. Вот только как это работает. Или вы можете запустить синхронизацию только тогда, когда пользователь запустил Outlook.

Если задействован сервер обмена, вы можете вместо этого изучить API против обмена.

1 голос
/ 07 декабря 2009

Вы не сможете использовать библиотеки COM-взаимодействия Outlook (или любые другие Office) без запуска хост-приложения, и (насколько мне известно) Outlook не предлагает возможность запуска нескольких экземпляров, поэтому создание ваш собственный скрытый экземпляр, вероятно, не вариант.

Мое единственное предложение - перехватить исключение, предоставить пользователю диалоговое окно с предупреждением, чтобы не закрывать Outlook, а затем снова открыть его. Очевидно, что это не то решение, которое вы искали, но я не вижу способа заставить Outlook сказать «открыто».

0 голосов
/ 11 декабря 2009

Если ваш пользователь outlook является пользователем exchange, вы также можете синхронизироваться с exchange (хорошо, это зависит от того, что вы делаете). Есть много вариантов подключения, в зависимости от версии: Exchange Web Services, или DAV, или через Mapi могут быть подходящими способами.

...