2015-02-16 6 views
0
ProcessStartInfo startInfo = new ProcessStartInfo(); 
Process first = new Process(); 
startInfo.FileName = "OUTLOOK"; 
        startInfo.Arguments = "http:\\blabla.com\EMAIL.msg"; 
        startInfo.CreateNoWindow = true;       
        first.StartInfo = startInfo; 
        first.Start(); 

Я использовал Process.Start для запуска Outlook и открытия файла .Msg. как я могу повторно использовать один и тот же процесс для открытия другого .msg-файла без открытия нескольких процессов/потоков/экземпляров Outlook?открыть файл .msg, используя Process.Start()

я попробовал что-то вроде

Process[] outlook = Process.GetProcessesByName("OUTLOOK"); 
Process existing = outlook[0]; 
        startInfo.FileName = "outlook"; 
        startInfo.Arguments = "http:\\blabla.com\2ndEMAIL.msg"; 
        startInfo.CreateNoWindow = true; 
        existing.StartInfo = startInfo; 
        existing.Start();       

повторно использовать один и тот же процесс, но я до сих пор открыть несколько окон перспективы, а не только .MSG файл, он

ответ

0

Слегка измененный код, это может Работа.

var first = new Process(); 
var pinfo = new ProcessStartInfo 
      { 
       FileName = "http:\\blabla.com\EMAIL.msg", 
       Arguments = "/quiet", 
       CreateNoWindow = true 
      }; 
first.StartInfo = pinfo; 
first.Start(); 
+0

это не помогло. спасибо в любом случае – user1166085

+0

@ user1166085 Поможете ли вы мне понять, в каком случае решение не обрабатывается, попытается его улучшить (если возможно). –

+0

вы можете попробовать повторно использовать процесс (первый), который вы создали, и попытаться открыть другой .msg-файл. он откроет еще один прогноз. Я ищу пути (ы), чтобы не открывать другой прогноз. – user1166085

0

Одновременно можно запускать только один экземпляр Outlook.

Как я могу повторно использовать один и тот же процесс для открытия другого .msg-файла без открытия нескольких процессов/потоков/экземпляров Outlook?

Вы можете использовать метод Process.Start для открытия сообщения в Outlook. Нет необходимости указывать Outlook, только путь к файлу .msg.

Знайте, класс Application в Outlook предоставляет вам метод CreateItemFromTemplate. Он создает новый элемент Outlook на основе указанного шаблона и возвращает вновь созданный элемент Outlook. Вы можете использовать его для создания элемента Outlook на основе файла .MSG. См. How To: Create a new Outlook message based on a template для получения дополнительной информации.

+0

Да, сценарий здесь заключается в том, что всякий раз, когда я пытаюсь открыть файл .msg, он открывает другое окно перспективы. было интересно, есть ли способ открыть файл .msg, а не окно перспективы. делает ли CreateItemFromTemplate в моем сценарии здесь? – user1166085

+0

Я думаю, что это не подходит, поскольку я просто пытаюсь открыть файл .msg и не хранить его. Мне нужно решение, которое позволяет мне открыть файл .msg без открытия дополнительных окон Outlook. – user1166085

0

Если вы хотите закрыть уже открытые сообщения Outlook, вы несете ответственность за это - используйте сборку Application.Inspectors для перечисления всех сообщений, которые Outlook отображает и закрывает их.

0

Просто сделай это

var process = new Process(); 
ProcessStartInfo startInfo = new ProcessStartInfo 
{ 
    FileName = fullPath //path of msg file 
}; 
process.StartInfo = startInfo; 
process.Start(); 
+0

Как это поможет? Outlook является одноэлементным, каждый раз, когда вы открываете файл MSG, элемент управления переносится на уже запущенный экземпляр Outlook, который откроет другое окно инспектора. Будет еще один экземпляр outlook.exe. –