Получение pid процесса, созданного в C # - PullRequest
6 голосов
/ 29 марта 2010

Допустим, я пытаюсь создать новый процесс со следующим кодом:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
p.StartInfo.FileName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\AwesomeFile.exe";
p.StartInfo.Arguments = "parameter1 parameter2";
p.StartInfo.CreateNoWindow = true;
p.Start();

и прямо в следующей строке я постараюсь получить pid этого процесса со следующей строкой:

MessageBox.Show(p.Id);

Эта строка дает мне «Нет процесса, связанного с этим объектом». ошибка. Любая идея о том, почему эта ошибка происходит?

Ответы [ 2 ]

10 голосов
/ 29 марта 2010

Проверьте возвращаемое значение Process.Start . В некоторых случаях Process.Start может возвращать значение false, в этом случае с ним не будет связан идентификатор.

3 голосов
/ 29 марта 2010

Сделай это System.Diagnostics.Process.GetProcessesByName ( "ProcessName") [0] .id.

...