Открыть файл .msg с помощью Process.Start()

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?

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

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();                         

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

Ответ 1

Немного изменив код, это может сработать.

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

Ответ 2

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

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

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

Помните, класс Application в Outlook предоставляет вам метод CreateItemFromTemplate. Он создает новый элемент Outlook на основе указанного шаблона и возвращает вновь созданный элемент Outlook. Вы можете использовать его для создания элемента Outlook на основе файла .MSG. Подробнее см. Как создать новое сообщение Outlook на основе шаблона.

Ответ 3

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

Ответ 4

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

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