Outlook 2013 Add In - окно "Выскочил" в ответах и ​​пересылках по электронной почте: какой тип интерфейса?

Я разрабатывал надстройку для Outlook 2013, и в настоящее время мне трудно найти тип интерфейса окна "Popped in", которое появляется в Outlook 2013 при ответах и ​​пересылке электронных писем.

Например: для новых сообщений электронной почты тип интерфейса Outlook.MailItem, а для приглашения на собрание тип интерфейса - Outlook.AppointmentItem.

Какой тип интерфейса можно использовать для определения всплывающего окна, которое появляется при ответе и пересылке в Outlook 2013?

3 ответа

Решение

Мой менеджер сидел со мной и работал через него, и, к счастью, решение было найдено. Вы можете получить доступ к "всплывающим" окнам ответа и пересылки, используя следующий код

//First, declare the interface type of Explorer
public static Outlook.Explorer currentExplorer;

//Create a method to identify the Inline response as a MailItem
    private void ThisAddIn_InlineResponse(object Item)
    {
        if (Item != null)
        {
            Outlook.MailItem mailItem = Item as Outlook.MailItem;
        }
    }

//Direct to the ThisAddIn_Startup() method and add an event handler for the Inline Response Method

currentExplorer.InLineResponse += ThisAddIn_InLineResponse;

//Access the popped in reply and forward window where required
object item = null;
item = currentExplorer.ActiveInlineResponse;

Это все еще объект MailItem. Взгляните на живые объекты Outlook, используя OutlookSpy. В вашем конкретном случае нажмите кнопку CurrentItem на ленте OutlookSpy.

Когда вы отвечаете или пересылаете почтовый элемент, новый элемент будет объектом MailItem. Вы можете использовать следующий код для определения типа предмета:

        Object selObject = this.Application.ActiveExplorer().Selection[1];
        if (selObject is Outlook.MailItem)
        {
            Outlook.MailItem mailItem =
                (selObject as Outlook.MailItem);
            itemMessage = "The item is an e-mail message." +
                " The subject is " + mailItem.Subject + ".";
            mailItem.Display(false);
        }
        else if (selObject is Outlook.ContactItem)
        {
            Outlook.ContactItem contactItem =
                (selObject as Outlook.ContactItem);
            itemMessage = "The item is a contact." +
                " The full name is " + contactItem.Subject + ".";
            contactItem.Display(false);
        }
        else if (selObject is Outlook.AppointmentItem)
        {
            Outlook.AppointmentItem apptItem =
                (selObject as Outlook.AppointmentItem);
            itemMessage = "The item is an appointment." +
                " The subject is " + apptItem.Subject + ".";
        }
        else if (selObject is Outlook.TaskItem)
        {
            Outlook.TaskItem taskItem =
                (selObject as Outlook.TaskItem);
            itemMessage = "The item is a task. The body is "
                + taskItem.Body + ".";
        }
        else if (selObject is Outlook.MeetingItem)
        {
            Outlook.MeetingItem meetingItem =
                (selObject as Outlook.MeetingItem);
            itemMessage = "The item is a meeting item. " +
                 "The subject is " + meetingItem.Subject + ".";
        }

См. Как: Программно определить текущий элемент Outlook для получения дополнительной информации.

Также вы можете рассмотреть возможность проверки свойства MessageClass класса MailItem. Свойство MessageClass связывает элемент с формой, на которой он основан. Когда элемент выбран, Outlook использует класс сообщения, чтобы найти форму и предоставить ее свойства, например команды "Ответить".

Другие вопросы по тегам