2017-09-02 5 views
0

Je travaille sur un Addin Outlook où j'essaye d'effectuer une action spécifique si elle est supprimée. Cela fonctionne bien avec tous les rendez-vous que j'ai déjà ouverts une fois. Lorsque le rendez-vous est créé ou supprimé du calendrier sans être ouvert en premier, aucun événement (BeforeDelete, Write) n'est déclenché.VSTO Addin Outlook Rendez-vous supprimer et écrire événement déclenché uniquement si ouvert en premier

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    inspectors = this.Application.Inspectors; 
    inspectors.NewInspector += 
    new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 
} 
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
{ 
    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; 
    } 
} 

Je suppose que l'explication réside dans le fait inspecteurs ne sont attachés lorsque la nomination est ouverte et que le chemin à suivre est quelque chose de plus comme décrit here mais je ne suis pas sûr. Le code ci-dessus fonctionne comme un charme sauf pour le cas spécifique où le rendez-vous n'est pas ouvert avant d'être supprimé ou créé.

Tout guidage sera très apprécié.

Répondre

1

Oui, BeforeWrite ne se déclenche pas. Si je sélectionne un rendez-vous dans Outlook et regarde les événements déclenchés par MOO en utilisant OutlookSpy (sélectionnez le rendez-vous, cliquez sur le bouton Item, allez à l'onglet Evénements et regardez le journal au bas de la page, modifiez le rendez-vous en ligne), ne peut voir que les événements suivants. Se déclenche comme prévu lorsque le rendez-vous est supprimé.

BeforeDelete

PropertyChange (ConversationIndex) 
PropertyChange (Subject) 
PropertyChange (Start) 
PropertyChange (StartInStartTimeZone) 
PropertyChange (StartUTC) 
PropertyChange (End) 
PropertyChange (EndInEndTimeZone) 
PropertyChange (EndUTC) 
PropertyChange (Duration) 
PropertyChange (AllDayEvent) 
PropertyChange (StartInStartTimeZone) 
PropertyChange (StartUTC) 
PropertyChange (End) 
PropertyChange (EndInEndTimeZone) 
PropertyChange (EndUTC) 
PropertyChange (Start) 
PropertyChange (EndInEndTimeZone) 
PropertyChange (EndUTC) 
PropertyChange (Duration) 
PropertyChange (End) 
PropertyChange (MeetingStatus) 
Write (false) 
BeforeCheckNames (false) 
AfterWrite() 
<Unknown(DispID=0x0000FC95)> (false) 
+0

+1 pour l'OutlookSpy que je ne connaissais pas. Curieusement, l'événement Write est déclenché et devrait donc être quelque chose que je peux capturer. Malheureusement, cela n'arrive pas. Cela peut être dû au fait que l'inspecteur vérifie si l'élément currentItem provient d'un type de rendez-vous Outlook. En faisant édition sans ouverture, je crois que la valeur est nulle. – Salim