COM Interop & Outlook - сделать Outlook видимым? - PullRequest
3 голосов
/ 26 мая 2010

Я автоматизирую Outlook из программы VB.NET, перенося элементы в календарь и контакты по запросу пользователя. Это все работает, это не проблема; проблема в том, что автоматизация Outlook, когда он еще не открыт, создает скрытый экземпляр. Возможно, я могу понять, как это может быть полезно, чтобы пользователь не закрывал его, пока вы еще над ним работаете, но, поскольку Outlook, кажется, принудительно запускает только один экземпляр, если пользователь пытается проверить изменения, сделанные во время работы моей программы подключенный к Outlook, ничего не происходит - единственный экземпляр - это скрытый экземпляр, и пользователь ничего не видит.

В старые времена автоматизации COM я имел обыкновение делать Word или Excel видимыми, но я, кажется, не мог сделать это с Outlook. Я пробовал:

OutlookApp.Visible = True

OutlookApp.Application.Visible = True

OutlookApp.ActiveWindow.Visible = True

OutlookApp.ActiveExplorer.Display() 

но ни один из них не работает.

Это не критично, но кто-нибудь знает, могу ли я заставить Outlook показать его главное окно? Бонусные баллы, если я смогу запретить пользователю закрывать экземпляр, но я просто согласен на показ окна:)

Ответы [ 2 ]

3 голосов
/ 04 июля 2013

Вы можете показать свою созданную почту следующим образом:

mailItem.Display();

Это код c #, но я думаю, что это, но быть близко к вашему vb.

2 голосов
/ 26 мая 2010

Я обычно проверяю, запущен ли сначала процесс «Outlook», а если нет, то оболочка Outlook.exe, а затем присоединение. Таким образом, вы никогда не должны получать скрытый процесс.

На самом деле нет способа отменить перспективу выключения, хотя вы можете подключить событие выхода из приложения, чтобы отключить и утилизировать его в своем приложении.

...