【问题标题】:No Application Quit event in Outlook?Outlook 中没有应用程序退出事件?
【发布时间】:2011-10-04 09:01:28
【问题描述】:

我正在使用 12.0 互操作库,它是 Outlook 2007 的默认库。我实际上的目标是将 Outlook 2003 到 2010 与注册到 quit 事件的代码示例集成。

即使 docs 说 Outlook 应用程序有一个应用程序退出 事件,我在 Outlook.Application 对象实现中找不到它。

Visual Studio 2010 似乎将Quit 识别为一种方法:

问题:

如何注册 Outlook 应用程序的退出事件? (如果有一个,或者应用程序退出时触发的任何事件)如果可能,请提供一些示例代码。

谢谢!

【问题讨论】:

  • 我看到它的Office 2007 API,是你那个版本的API。?
  • 我的目标是 Outlook 2003 到 2010。Interop dll 文件是 12.0 版,我认为它来自 Office 2007。
  • 你想在这里做什么?我之所以问,是因为 Application.Quit 事件并没有真正的帮助,因为当它触发时,所有对象都已被释放。
  • @JP.,我想我想弄清楚 Outlook 何时退出,以便我可以在连接到 Outlook MAPI 存储的应用程序中对此做出反应。我最终使用了 Tigran 提到的Process.Exited 事件。
  • 问题是Quit 方法和Quit 事件之间的名称冲突,两者都定义在不同的接口上。该方法会隐藏事件,您必须将 Application 对象显式转换为 Microsoft.Office.Interop.Outlook.ApplicationEvents_11_Events 接口才能访问事件。

标签: c# outlook outlook-object-model quit


【解决方案1】:
((Outlook.ApplicationEvents_11_Event)Application).Quit 
+= new Outlook.ApplicationEvents_11_QuitEventHandler(ThisAddIn_Quit);

void ThisAddIn_Quit()
{
   System.Windows.Forms.MessageBox.Show("bye bye problem, I found the solution!!");
}

【讨论】:

  • 确实不错。需要这个是因为根据 MSDN,Outlook 2007SP2、Outlook 2010 及更高版本不再调用 ThisAddin_Shutdown。 link
  • 这应该是例外的答案。
【解决方案2】:

试着给出一个解决方案:也许你可以得到Outlook进程并监听Process.Exited事件。

【讨论】:

  • 感谢您的回答。我假设您的意思是Process 中的Exited 事件,对吧?
  • 是的,这是一种方法,但因为我的目标也是 Outlook 2003 和 2007 SP1,所以如果有应用程序仍在使用 OUTLOOK 进程,它不会关闭(有事可做)与 COM)。所以我仍然想知道当用户按下 X 按钮时是否触发了事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 2018-05-28
  • 1970-01-01
  • 2018-04-01
相关资源
最近更新 更多