Офис 2007:Программно управлять помощником по работе вне офиса?

StackOverflow https://stackoverflow.com/questions/1679008

Вопрос

Кто-нибудь знает, как программно включить/отключить фактическое состояние автоответчика при отсутствии на работе в Outlook 2007?

Уже искал в браузере объектов в VS 2008 и нашел перечисление Microsoft.Office.Interop.Outlook.OlBusyStatus но я не нашел ни одного класса или чего-то еще, использующего это.

Любая идея приветствуется, спасибо и с уважением

Это было полезно?

Решение

ОБНОВЛЯТЬ:Обновлен код ниже, используя пример кода, адаптированный из этот пост в блоге который будет лучше работать в более широком спектре установок Outlook (например,те, кто использует как Exchange, так и PST или имеет доступ к нескольким почтовым ящикам Exchange).

Вот код, который работал у меня в Outlook 2007, чтобы установить статус OOF из внешнего (для Outlook) EXE-файла:

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.NameSpace ns = app.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

Убедитесь, что вы не запускаете этот код от имени администратора, а Outlook не от имени администратора, иначе вы можете получить ошибку, связанную с безопасностью, в Vista.

Обратите внимание, что внутри Outlook появятся всплывающие диалоговые окна безопасности, чтобы убедиться, что пользователь согласен с доступом к объектной модели Outlook.Это нормально, когда доступ к объектной модели Outlook осуществляется из внешнего EXE-файла.

Однако если вы получаете доступ к объектной модели из надстройки, приведенный выше код не совсем корректен:вместо создания нового объекта Outlook.Application с помощью конструктора вам необходимо получить ссылку на доверенный объект Outlook.Application изнутри вашей надстройки, например:

Microsoft.Office.Interop.Outlook.NameSpace ns = this.Application.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

Кстати, есть хороший Статья MSDN о безопасности надстроек, что может быть полезно, если вы столкнетесь с диалоговыми окнами безопасности или ошибками.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top