Идентификатор из Process.Start совпадать иногда, а иногда нет - PullRequest
2 голосов
/ 31 мая 2011

Я хотел бы запустить из кода C # ANSYS Fluent exe файл

А теперь для сравнения приведу два примера

Process fluent = Process.Start(@"C:\Program Files\ANSYS Inc\v130\fluent\ntbin\win64\fluent.exe", @"2ddp file.jou");

Process browser = Process.Start("IExplorer.exe", "http://www.google.com");

Почему код browser.ID в C # такой же, как в TaskManager? Почему fluent.ID в коде отличается от TaskManager?

Это из-за особенностей Fluent или я ошибаюсь?

И главный вопрос: как запустить Fluent и поймать его идентификатор в коде C #?

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Это почти наверняка связано с характеристиками Fluent. Если вы не можете получить (релевантный) PID из Process.Start, вам может потребоваться прибегнуть к запуску процесса, а затем перейти в цикл ожидания и попытаться извлечь процесс по имени (см .: Процесс). GetProcessesByName - я думаю, что вы передадите имя EXE-файла без .exe).

Точно, насколько надежным будет это решение, зависит от того, насколько хорошо вы сможете предсказать характеристики Fluent, что уже выглядит довольно сложно. Я бы определенно рекомендовал использовать Process Explorer (как предложено выше), а также ознакомиться с другими инструментами SysInternals, они дают тонну понимания в этих случаях.

0 голосов
/ 11 сентября 2011

Ответ Даниэль Б в порядке, но если мне нужно запустить несколько экземпляров Fluent, это не сработает.Таким образом, лучшее решение, которое я нашел, это уточнить CommandLine аргументы и затем выполнить поиск в диспетчере задач

...