2017-10-17 6 views
0

캘린더 약속과 관련하여 Outlook Addin에서 작업하고 있습니다. 내 문제는 초기 약속 제목을 저장 한 다음 추가 작업을 트리거하기 위해 업데이트 된 경우 저장할 때 확인해야한다는 것입니다. Addin/Ribbon의 단 하나의 인스턴스 만 있다는 것을 이해했습니다. 처음에는 정적 변수를 사용했지만 여러 창이 열리면 제목이 섞여서 도움이되지 않습니다. 내 질문 : 1) 약속과 관련된 변수를 저장할 위치는 어디입니까? 2) 어떤 객체가 쓰기/저장/전송/메소드를 호출했는지 탐지하는 방법은 무엇입니까? 어떤 도움이 많이 이해할 수있을 것이다VSTO 추가 항목 관련 변수 및 호출 항목 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

Ok 이전 글에 실린 Microsoft 튜토리얼은 실제로 매우 분명하고 효율적입니다. 지시에 따라 약속 항목에 대한 래퍼 클래스를 만들었고 매력처럼 작동했습니다. 테스트 프로젝트를 다운로드 할 수 있습니다. here