用户选择电子邮件时如何在收件箱窗格上获取鼠标单击事件
Posted
技术标签:
【中文标题】用户选择电子邮件时如何在收件箱窗格上获取鼠标单击事件【英文标题】:How to get mouse click event on the Inbox pane when a user selects an email 【发布时间】:2011-03-14 11:52:58 【问题描述】:我正在使用 C# 为 Office 2007 创建一个插件。每当用户单击收件箱窗格中电子邮件列表中的电子邮件时,此插件负责在新窗格中显示电子邮件标题信息。 现在我不确定当用户选择一封电子邮件并阅读该电子邮件标题信息时如何在收件箱窗格上获得鼠标单击事件。任何有用的指针?
【问题讨论】:
看看这里,也许有帮助:eggheadcafe.com/software/aspnet/34867978/…。您不应该关心鼠标单击,而应该关心电子邮件列表中的选择更改。 谢谢丹尼尔,您提供的链接很有帮助。 是否应该将其标记为已回答? @DanielHilgarth 必须根据他的评论创建一个答案,以便将其标记为答案 【参考方案1】:您可以使用Microsoft V11.0 Outlook 对象库(添加引用),然后查询一个MAPI 邮箱:
http://geekswithblogs.net/TimH/archive/2006/05/26/79720.aspx 要么 http://support.microsoft.com/kb/310258
使用 MAPI 或 POP3 访问交换收件箱的一些要求: C# MAPI to read exchange server inbox
现在,要获取已选择的收件箱消息,您可以使用:
Outlook.Explorer explorer = null;
explorer = outlookObj.ActiveExplorer();
if (explorer.Selection.Count > 0)
var sel = explorer.Selection[1];
if (sel is Microsoft.Office.Interop.Outlook.MailItem)
var item = sel as MSOutlook.MailItem;
MessageBox.Show("Selected letter: "+item.Body);
【讨论】:
这段代码看起来很有希望,但它应该附加什么事件才能获得实际选定的项目?【参考方案2】: private void ThisAddIn_Startup(object sender, System.EventArgs e)
this.Application.Inspectors.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
try
Outlook.MailItem tmpMailItem = (Outlook.MailItem)Inspector.CurrentItem;
if (tmpMailItem != null)
if (Inspector.CurrentItem is Outlook.MailItem)
tmpMailItem = (Outlook.MailItem)Inspector.CurrentItem;
string to= tmpMailItem.To;
string body = tmpMailItem.Body;
catch
【讨论】:
以上是关于用户选择电子邮件时如何在收件箱窗格上获取鼠标单击事件的主要内容,如果未能解决你的问题,请参考以下文章