Marshal.GetActiveObject("Outlook.Application")
выдает Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
, когда Outlook запускается и продолжает работать, пока он не работает, пока окно, не относящееся к Outlook, не станет активным окном переднего плана.
Я использую версию Outlook 1901 Build 11231.20130 в версии Windows 101803 Build 17134.523 (это моя локальная машина).Я наблюдал за клиентскими машинами, которые не ведут себя таким образом.Это происходит в приложении WPF с использованием .NET 4.5.2 и Microsoft.Office.Interop.Outlook version 15.0.4797.1003, полученных через NuGet.
Я неоднократно запускал следующий код.Как подробно описано выше, он будет успешным после того, как экземпляр Outlook будет свернут или если окно, не относящееся к Outlook, установлено на передний план, но оно может постоянно отказывать (вывод ниже), прежде чем это произойдет.Я пытался сделать паузу на ~ 20-30 секунд, чтобы дать Outlook время для загрузки, но все равно получаю тот же результат.
// Detect that the active window is an Outlook window
Outlook.Application app = null;
// Optional: Wait for Outlook to load 20-30 sec using Thread.Sleep
try
{
Debug.WriteLine("app");
app = (Outlook.Application)Marshal.GetActiveObject("Outlook.Application");
Debug.WriteLine("got app");
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);
}
// Do things with app
Пока Outlook работает, я ожидаю увидеть:
app
got app
, который возникает, если окно, не относящееся к Outlook, установлено на передний план (т. Е. Не окно обозревателя или инспектора) с момента запуска Outlook.Если Outlook работает и всегда был на переднем плане, я вместо этого вижу:
app
Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
Как выстрел в темноте, я попытался «загрузить» Interop, выполнив следующие действия, когда я заметил этопроисходит:
bootApplication = new Microsoft.Office.Interop.Outlook.Application();
Без эффекта.Любой вклад будет оценен.Спасибо!