2010-03-29 19 views
6

Diciamo che sto cercando di creare un nuovo processo con il seguente codice:Ottenere un pid di un processo creato in 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(); 

e proprio nella riga successiva, cercherò di ottenere un pid di quel processo con la seguente riga:

MessageBox.Show(p.Id); 

questa linea mi sta dando il "Nessun processo è associato a questo oggetto." errore. Qualche idea sul perché questo errore si verifica?

risposta

3

Eseguire questo System.Diagnostics.Process.GetProcessesByName ("nomecompleto") [0] .Id.

+0

Grazie per la risposta. C'è un modo per identificare diversi processi con lo stesso nome? Diciamo che ho due processi iexplore in esecuzione, entrambi sono stati inizialmente eseguiti con url diversi come parametri. Come potrei sapere quale è quale nella matrice? – screenshot345

+0

ho notato questo comando: System.Diagnostics.Process.GetProcessesByName ("processname") [0] .StartInfo che comprende parametro argomento, che sarebbe grande, ma risulta essere vuoto su un file che non era eseguito da C#. C'è un modo per risolverlo? – screenshot345

10

Controllare il valore di ritorno di Process.Start. In alcuni casi, Process.Start può restituire false, nel qual caso nessun ID verrà associato ad esso.

Problemi correlati