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 использует класс сообщения, чтобы найти форму и предоставить ее свойства, например команды "Ответить".