有没有可能捕捉到“发送”?事件在Outlook 2010插件中的按钮'
本文关键字:插件 2010 Outlook 按钮 事件 有可能 发送 | 更新日期: 2023-09-27 18:09:31
因为我在功能区的类中,所以没有指向Outlook的指针。应用程序对象。因此,我不能使用
Application.ItemSend += new ApplicationEvents_11_ItemSendEventHandler(MyItemSendEventHandler)
此事件处理程序。
如何连接Outlook。应用程序对象在功能区类或有另一种方式来捕获发送事件?
public void SendEnMail(Office.IRibbonControl control) //OnAction Function
{
Outlook.Application oApp = new Outlook.Application();
Outlook._MailItem myMail = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
myMail.Display(true);
Outlook.Application application = Globals.ThisAddIn.Application;
application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}
void Application_ItemSend(object Item, ref bool Cancel)
{
string a = ((Microsoft.Office.Interop.Outlook.MailItem)Item).Body;
System.Windows.Forms.MessageBox.Show(a);
Cancel = true;
}
我不能像那样捕获ItemSend事件。但是如果我将事件处理程序写入ThisAddIn类
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}
void Application_ItemSend(object Item, ref bool Cancel)
{
string a = ((Microsoft.Office.Interop.Outlook.MailItem)Item).Body;
System.Windows.Forms.MessageBox.Show(a);
Cancel = true;
}
我通常这样做:
Outlook.Application application = Outlook.Application.GetActiveInstance();
但这应该是一样的:
Outlook.Application application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
或者如果你在制作COMAddIn,你可以在OnConnection事件中捕获应用程序对象。希望能有所帮助
编辑:在插件启动时完成对事件的绑定是有意义的。当您绑定到onAction上的事件时,您将(从那时起)为每个Item捕获您单击按钮的次数(因为它添加了一个新的处理程序)。你也可以试着接邮件。SendEvent
private Outlook.MailItem myMail;
public void SendEnMail(Office.IRibbonControl control) //OnAction Function
{
myMail = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
myMail.Send += mail_Send;
}
void mail_Send(ref bool Cancel)
{
string a = myMail.Body;
System.Windows.Forms.MessageBox.Show(a);
Cancel = true;
}
Edit2:对不起,我在用另一个图书馆。根据MSDN,它应该是Send事件而不是SendEvent事件。我已经相应地更改了示例。希望这次能成功。
我想我看到的问题是你使用的_MailItem,这是MailItem接口的一个接口。使用MailItem接口代替