gpt4 book ai didi

c# - 操作不可用(HRESULT : 0x800401E3 (MK_E_UNAVAILABLE)) when running through Windows Service? 异常

转载 作者:行者123 更新时间:2023-11-30 14:25:41 26 4
gpt4 key购买 nike

我尝试从 Windows 服务 Hook 到 Outlook 应用程序,但出现异常操作不可用(来自 HRESULT 的异常:0x800401E3 (MK_E_UNAVAILABLE))这是我的代码。

   public void ItemSendEvent()
{
try
{
if (Process.GetProcessesByName(ApplicationConstants.OUTLOOK_PROCESS_NAME).Count() > 0)
{
// If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
outlookApplication = Marshal.GetActiveObject(ApplicationConstants.OUTLOOK_APPLICATION_NAME) as Microsoft.Office.Interop.Outlook.Application;
Microsoft.Office.Interop.Outlook.NameSpace nameSpace = outlookApplication.GetNamespace(ApplicationConstants.OUTLOOK_NAME_SPACE);
nameSpace.Logon("", "", Missing.Value, Missing.Value);
nameSpace = null;
outlookApplication.ItemSend += outlookApplication_ItemSend;
}
log.Info("Outlook Item Send event registered successfully.");
}
catch (System.Exception ex)
{
log.Error("Exception occurred while registering Outlook Item Send event. " + ex.Message);
}
}

但是当我通过 Windows 窗体应用程序启动它时,相同的代码工作正常。我浏览了一些网站,他们说 outlook 对象不在 ROT 表中。什么是解决方案。

最佳答案

Outlook 或任何其他 Office 应用无法在 Windows 服务中运行,即使您的服务作为交互式用户运行也是如此。仅扩展 MAPI(仅限 C++ 或 Delphi)或扩展 MAPI 包装器,如 Redemption (我是它的作者 - 它的 RDO 系列对象)可以在服务中使用。

在您的特定情况下,看起来您正试图捕获 Application.ItemSend 事件。绝对没有理由为此创建 Windows 服务。创建一个 COM 插件 - 只要 Outlook 本身在同一安全上下文中的同一进程中运行,它就会由 Outlook 加载并运行。

关于c# - 操作不可用(HRESULT : 0x800401E3 (MK_E_UNAVAILABLE)) when running through Windows Service? 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com