Открыть файл .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();