На странице MSDN Process.Start () указано, что этот метод имеет перегрузку типа Boolean, где возвращаемые значения означают:
true, если ресурс процесса запущен;
false, если нет нового ресурса процесса
началось (например, если существующий
процесс используется повторно).
Дополнительно он может выдавать три исключения:
- InvalidOperationException
В StartInfo компонента Process не было указано имя файла.
-или-
Элемент ProcessStartInfo.UseShellExecute свойства StartInfo имеет значение true, тогда как ProcessStartInfo.RedirectStandardInput, ProcessStartInfo.RedirectStandardOutput или ProcessStartInfo.RedirectStandardError имеет значение true.
Произошла ошибка при открытии соответствующего файла.
Объект процесса уже удален.
Чтобы использовать эту перегрузку Process.Start () (которая является единственной нестатической перегрузкой метода), вам необходимо создать экземпляр класса Process, используя объект ProcessStartInfo.
Пример этого ниже:
ProcessStartInfo processStartInfo = new ProcessStartInfo("EXCEL.EXE");
Process process = new Process();
process.StartInfo = processStartInfo;
if (!process.Start())
{
// That didn't work
}
Хотя, учитывая, что это все равно может привести к ошибкам, вам, вероятно, лучше просто заключить перехват в один из статических вызовов метода .Start ().
Учитывая это, кажется очевидным, что вызов Process.Start () будет либо работать, либо нет, и вы можете определить это по возвращаемому значению 0 (или выбрасываемому исключению).
После того, как ваш процесс запущен, у вас появляется большой контроль над вещами, а свойства класса Process, такие как HasExited, позволяют вам проверить, в каком состоянии находится процесс.
Короче говоря - если у пользователя нет Excel на своем компьютере, Process.Start () сгенерирует исключение.