1

Outlook 2007/2010 用のアドインを作成して、新しく作成された電子メール メッセージの受信者を変更しようとしています。ユーザーが Outlook 内で新しい電子メール メッセージを作成すると、すべて正常に機能します (イベントを使用していInspectors.NewInspectorます)。しかし、ユーザーが別のアプリケーション ( MS Word や Adob​​e Acrobat など) を使用して添付ファイルを電子メールで送信しようとすると、電子メールNewInspectorの作成ウィンドウが表示されたときにイベントが発生しません。このような状況で発生したイベントをキャッチする簡単な方法はありますか?

イベントを使用してみましたApplication.ItemLoadが、正常にキャストした後、メソッドまたはプロパティにアクセスできませんOutlook.MailItem(というエラーが表示System.Runtime.InteropServices.COMException: The item’s properties and methods cannot be used inside this event procedureされます)。Visual Studio 2010 で C# を使用しています。

4

1 に答える 1

0

Outlook.exeプロセスが実行されていない場合は、ユーザーが Outlook を直接開いた場合を除いて呼び出されないため、 は起動しませんNewInspectorThisAddIn_Startup

外部アプリケーションが新しいウィンドウを開くとき、Outlook はまだ実行されていないためInspector、手動で自分自身を呼び出すか、リボンが読み込まれThisAddIn_Startupたときに起動する必要があるカスタム イベントを添付する必要があります。Inspectorこれを行うのに最適な場所は、処理CreateRibbonExtensibilityObjectまたはRequestServiceメソッドです。

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.IRibbonExtensibility).GUID)
       this.ThisAddIn_Startup(this, null);

    return base.RequestService(serviceGuid);
}

ThisAddIn_Startupこれに関する唯一の注意点は、リボンと Outlook の両方がスタートアップ ルーチンを呼び出すことができるようになったため、メソッドの再入力をサポートする必要があることです。Init ( ThisAddIn_Startup) ルーチンを 2 回以上呼び出し続けないように、ロックを安全に管理する必要があります。

于 2012-10-29T15:48:22.520 に答える