7

Outlook 2007 で不在時の自動応答の実際の状態をプログラムで有効/無効にする方法を知っている人はいますか?

VS 2008 で既にオブジェクト ブラウザを検索して列挙を見つけましたMicrosoft.Office.Interop.Outlook.OlBusyStatusが、これを使用するクラスやその他のものは見つかりませんでした。

どんなアイデアでも大歓迎です、ありがとう、そしてよろしく

4

1 に答える 1

3

更新:このブログ投稿から適用されたサンプル コードを使用して、以下のコードを更新しました。これは、さまざまな Outlook インストール (Exchange と PST の両方を使用するもの、または複数の Exchange メールボックスにアクセスするものなど) でより適切に機能します。

外部の(Outlookへの)EXEからOOFステータスを設定するために、Outlook 2007で私のために働いたコードは次のとおりです。

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 記事があります。これは、セキュリティ ダイアログやエラーが発生した場合に役立つ場合があります。

于 2009-11-07T18:47:43.343 に答える