¿Cómo capturar un evento de eliminación de cita de Outlook en una carpeta personalizada?

Estoy desarrollando un complemento de Outlook. Una parte de ella es que organizo las citas en una carpeta específica. Quiero capturar si se elimina un elemento (en este caso, salir de la carpeta "mi" cuenta como eliminado).

Encontre el articulo https://stackoverflow.com/questions/10579240/how-to-capture-a-c-sharp-outlook-addin-appointment-delete-event y su solución ayudó mucho, pero tengo un gran problema: el evento solo se activa en esa "sesión", donde se creó mi carpeta, no cuando obtengo el objeto de carpeta de Outlook.

Mi código se ve así:

private Outlook.MAPIFolder _CalendarMAPIFolder = null;
private Outlook.MAPIFolderEvents_12_Event _CalendarFolder = null;
private Outlook.Items _CalendarItems = null;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Outlook.MAPIFolder calendarFolder =
        this.Application.GetNamespace("mapi").GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);

    // get my-Folder (if not found, create it)
    try
    {
        _CalendarMAPIFolder = calendarFolder.Folders["my-Folder"];
    }
    catch
    {
        _CalendarMAPIFolder = calendarFolder.Folders.Add("my-Folder");
    }
    _CalendarItems = _CalendarMAPIFolder.Items;
    _CalendarFolder = _CalendarMAPIFolder as Outlook.MAPIFolderEvents_12_Event;
    if (_CalendarFolder == null)
    {
        MessageBox.Show("can not cast MAPIFolder to Folder");
    }


    _CalendarFolder.BeforeItemMove += new Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(Folder_BeforeItemMove);
    Debug.Print("events registered");
}
public void Folder_BeforeItemMove(
        Object Item,
        Outlook.MAPIFolder MoveTo,
        ref bool Cancel)
{
    Outlook.AppointmentItem aitem = Item as Outlook.AppointmentItem;
    string s = "";
    if (aitem != null) s = aitem.Subject;
    //Cancel = false;
    MessageBox.Show("Test! " + s);
}

¿Alguien tiene una solución?

Gracias ;)

Editar: todavía no tengo ni idea :(((((((

preguntado el 31 de julio de 12 a las 10:07

2 Respuestas

Por definición, BeforeItemMove solo se activa cuando el usuario (cliente de perspectiva) inicia una Item ser movido. No se activará para eventos de sincronización (es decir, sincronización de intercambio).

Si está conectando Outlook a un Exchange Server, debe buscar en EWS (Servicios web de Exchange) si quieres ser notificado de eventos de cambio de carpeta fuera de la aplicación cliente (es decir, sesión). EWS ofrece opciones de notificación push, pull o streaming. Adjuntarías una notificación a Operación "Eliminación de artículos".

Respondido 31 Jul 12, 19:07

Gracias, pero ese no es el problema. Con "sesión" mencione el tiempo entre abrir Outlook y cerrar Outlook. -> el evento solo se dispara si elimino la carpeta, cierro Outlook, la abro de nuevo. ... pero eliminar la carpeta cada vez destruiría el sentido de mi complemento - Xaw4

¡Todo fue culpa de Microsoft! Fue un error, ¡solo necesitaba actualizar Outlook!

Respondido 22 ago 12, 08:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.