2010-03-29 71 views
6

permite decir que estoy tratando de crear un nuevo proceso con el siguiente código:Conseguir un PID de un proceso creado en C#

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

y justo en la línea siguiente, voy a tratar de obtener una pid de ese proceso con la siguiente línea:

MessageBox.Show(p.Id); 

esta línea me está dando la "Ningún proceso está asociado con este objeto." error. ¿Alguna idea de por qué ocurre este error?

Respuesta

3

Haga esto System.Diagnostics.Process.GetProcessesByName ("nombreproceso") [0] .Id.

+0

Gracias por su respuesta. ¿Hay alguna manera de identificar diferentes procesos del mismo nombre? Digamos que tengo dos procesos iexplore en ejecución, ambos se ejecutaron inicialmente con diferentes URL como parámetros. ¿Cómo sabría cuál es cuál en la matriz? – screenshot345

+0

me di cuenta de este comando: System.Diagnostics.Process.GetProcessesByName ("ProcessName") [0] .StartInfo que incluye parámetros argumento, que sería grande, pero resulta ser vacío en un archivo que no era ejecutado por C#. Hay alguna manera de arreglarlo? – screenshot345

10

Compruebe el valor de retorno de Process.Start. En algunos casos, Process.Start puede devolver false, en cuyo caso no se asociará Id.

Cuestiones relacionadas