2010-03-29 4 views
6

Disons que je suis en train de créer un nouveau processus avec le code suivant:Obtenir un pid d'un processus créé 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(); 

et à droite dans la ligne suivante, je vais essayer d'obtenir un pid de ce processus avec la ligne suivante:

MessageBox.Show(p.Id); 

cette ligne me donne le « Aucun processus est associé à cet objet. » Erreur. Une idée de pourquoi cette erreur se produit?

Répondre

3

Pour ce faire System.Diagnostics.Process.GetProcessesByName ("processname") [0] .Id.

+0

Nous vous remercions de votre réponse. Existe-t-il un moyen d'identifier différents processus du même nom? Disons que j'ai deux processus iexplore en cours d'exécution, les deux ont été initialement exécutées avec des URL différentes en tant que paramètres. Comment saurais-je lequel est dans le tableau? Je – screenshot345

+0

remarqué cette commande: System.Diagnostics.Process.GetProcessesByName (« processname ») [0] .StartInfo qui comprend le paramètre argument, ce qui serait formidable, mais il se révèle être vide sur un fichier qui n'a pas été exécuté par C#. Y a-t-il un moyen de le réparer? – screenshot345

10

Vérifiez la valeur de retour de Process.Start. Dans certains cas, Process.Start peut renvoyer false, auquel cas aucun Id ne lui sera associé.

Questions connexes