我正在尝试在 Excel 加载项中获取 Outlook 应用程序对象。
如果有正在运行的 Outlook 实例,它应该得到这一点,如果没有,它应该使用 Outlook 对象模型创建一个。
这是我现在的代码:
public static Outlook.Application GetApplicationObject()
{
Outlook.Application application = null;
if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
{
application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
}
else
{
application = new Outlook.Application();
}
return application;
}
我的问题:它找到 Outlook 进程,但无法获取它们,并抛出以下错误消息:
操作不可用(HRESULT 异常:0x800401E3 (MK_E_UNAVAILABLE))
我尝试一步步调试它,并监视任务管理器。我可以看到我有一个 Outlook 实例,但它只是任务栏右侧的一个图标。这是否意味着该实例尚未完全加载,并且无法访问它以从中获取 Application 对象?
我最终修改了我的代码,并将 if-else 分成 2 个 try-catch,并分别返回,但我仍然认为上面的代码应该可用。
Outlook 是单例,所以new Outlook.Application()
将始终有效 - 如果它已经在运行,您将获得该正在运行的对象。
确保两个应用程序(Excel 和 Outlook)在相同的安全上下文中运行。任一应用程序是否以提升的权限运行(以管理员身份运行)?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)