Я пытаюсь подключиться к Outlook приложения из Windows Service, но получить исключение. Операция недоступна (Исключение из HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) вот мой код.Операция недоступна (Исключение из HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) при работе через службу Windows?
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 Form с его работой Fine. я прошел через некоторые сайты, и они говорили, что объект outlook не находится в таблице ROT. каково будет решение.
Я бы * догадался, что вы не можете сделать это через сеансы. Возможно, вашей службе потребуется запустить код в сеансе пользователя, если он хочет поговорить с экземпляром пользователя Outlook. (Что бы вы ожидали, что опубликованный код будет работать, если два или более пользователей одновременно будут работать с Outlook?) –