2017-10-17 22 views
0

予定表の予定に関連するOutlook Addinで作業しています。私の問題は、最初の予定タイトルを保存し、追加のアクションをトリガーするために更新された場合に保存するときにチェックする必要があるということです。 Addin/Ribbonのインスタンスが1つしかないことを理解しました。最初は静的変数を使用しましたが、複数のウィンドウを開いたときにタイトルが混ざってしまうような場合は役に立ちません。私の質問は以下の通りです: 1)予定に関連する変数をどこに保管しますか? 2)どのオブジェクトが書き込み/保存/送信/メソッドを呼び出しているかを検出するにはどうすればよいですか?ここでVSTO Addinアイテム関連の変数と呼び出しアイテムID

は、私のコードの関連抽出物である:

public partial class ThisAddIn 
{ 

    public static Outlook.AppointmentItem appointmentItem; 
    public static Addin_Ribbon ribbon; 
    Outlook.Inspectors inspectors; 

// Needs to be saved for each appointments 
public static string initialMeetingSubject = ""; 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     inspectors = this.Application.Inspectors; 
     inspectors.NewInspector += 
     new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 
    } 

    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
    { 
     ribbon = new MyAddin_Ribbon(); 
     return ribbon; 
    } 

    void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
    { 
     // Save current appointment reference 
     appointmentItem = Inspector.CurrentItem as Outlook.AppointmentItem; 

     if (appointmentItem != null) 
     { 
      (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Send += _appointment_Send; 
      (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).BeforeDelete += _appointment_Delete; 
      (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Write += _appointment_Write;  
      (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Open += _appointment_Open; 
      (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Close += _appointment_Close; 

      // Save initial value to compare during appointment save 
      ThisAddIn.initialMeetingSubject = appointmentItem.Subject; 

     } 
    } 

    private void _appointment_Write(ref bool Cancel) 
    { 
     Logger.WriteLine(LogLevel.Debug, "Appointment WRITE Initial Subject: " +initialMeetingSubject + “ Updated Subject: “ + ThisAddIn.appointmentItem.Subject); 
    } 
} 

どのような援助がはるかに高く評価されます。

+0

よく答えると、ラッパーを開発することになります:https://msdn.microsoft.com/en-us/library/ff973716(v=office.14).aspxこれがどう役立つかはまだ分かりません。 – Salim

答えて

0

私の以前のコメントに掲載されているMicrosoftのチュートリアルは、実際はかなり明確で効率的です。指示に続いて、私は予定アイテムのためのラッパークラスを作成し、それは魅力のように働いた。テストプロジェクトをダウンロードすることができますhere

関連する問題