C#Outlook - 用户退出

时间:2009-12-07 17:54:36

标签: c# .net com outlook

我们正在使用.Net 3.0为Outlook编写联系人同步应用程序。我们使用的是“Microsoft Outlook 12.0对象库”或Microsoft.Office.Interop.Outlook;

我们打电话时注意到:

ApplicationClass app = new Microsoft.Office.Interop.Outlook.ApplicationClass();

如果用户没有打开Outlook,它将启动Outlook。但是,如果用户在我们的应用程序打开时关闭Outlook,则下次引用Outlook ApplicationClass实例时会出现COMException。

我们如何弥补这种行为?如果我们得到这个例外,我们不想重新打开Outlook。

我们宁愿Outlook根本不启动,也不会被隐藏,但我们希望用户即使我们的应用程序处于打开状态也能使用Outlook。

我们也可能以某种方式挂钩到ApplicationExit事件或其他东西,但如果我们此时创建一​​个新的ApplicationClass,它会再次启动Outlook吗?

我们如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

我同意Adam,但是不应该捕获异常,而应该挂钩process.exit事件,然后重新创建对象。这将启动一个新的outlook实例。这就是它的工作原理。或者,只有在用户启动Outlook时才能运行同步。

如果涉及到交换服务器,您可以考虑使用API​​替换交换服务器。

答案 1 :(得分:1)

如果没有运行主机应用程序,您将无法使用Outlook(或任何Office)COM-interop库,并且(据我所知)Outlook不提供运行多个实例的功能,因此创建隐藏的你自己的实例可能不是一个选项。

我唯一的建议是捕获异常,向用户显示一个不关闭Outlook的警告对话框,然后优雅地重新打开它。显然这不是你想要的解决方案,但我没有看到一种方法迫使Outlook开放。

答案 2 :(得分:0)

如果您的Outlook用户是交换用户,您也可以与交换机同步(好吧,这取决于您正在做什么)。连接有很多选择,取决于版本:Exchange Web服务,或者DAV或通过Mapi可以实现。