2010-03-29 10 views
6

Powiedzmy, że próbuję utworzyć nowy proces z następującego kodu:Pierwsze PID procesu utworzonego w 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(); 

i prawo w następnej linii, postaram się dostać pid tego procesu z następującym wierszem:

MessageBox.Show(p.Id); 

Ta linia daje mi "Żaden proces nie jest powiązany z tym obiektem". błąd. Każdy pomysł, dlaczego ten błąd występuje?

Odpowiedz

3

Dokonaj tego System.Diagnostics.Process.GetProcessesByName ("processname") [0] .Id.

+0

Dziękuję za odpowiedź. Czy istnieje sposób identyfikacji różnych procesów o tej samej nazwie? Powiedzmy, że mam uruchomione dwa procesy iexplore, oba zostały początkowo wykonane z różnymi adresami URL jako parametrami. Skąd mam wiedzieć, który z nich jest w tablicy? – screenshot345

+0

Zauważyłem to polecenie: System.Diagnostics.Process.GetProcessesByName ("processname") [0] .StartInfo który zawiera parametr argumentu, który byłby świetny, ale okazuje się pusty w pliku, który nie był wykonywane przez C#. Czy jest jakiś sposób aby to naprawić? – screenshot345

10

Sprawdź wartość zwracaną Process.Start. W niektórych przypadkach Process.Start może zwrócić wartość false, w takim przypadku żaden identyfikator nie zostanie z nim powiązany.

Powiązane problemy