2010-03-29 37 views
6

Cho phép nói rằng tôi đang cố gắng để tạo ra một quy trình mới với đoạn mã sau:Bắt một pid của một quá trình tạo ra trong 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(); 

và ngay trong dòng tiếp theo, tôi sẽ cố gắng để có được một pid của quá trình đó với dòng sau:

MessageBox.Show(p.Id); 

Dòng này cho tôi "Không có quá trình nào được liên kết với đối tượng này". lỗi. Bất kỳ ý tưởng nào về lý do tại sao lỗi này xảy ra?

Trả lời

3

Làm điều này System.Diagnostics.Process.GetProcessesByName ("processname") [0] .Id.

+0

Cảm ơn bạn đã phản hồi. Có cách nào để xác định các quy trình khác nhau có cùng tên không? Cho phép nói rằng tôi có hai quá trình iexplore đang chạy, cả hai ban đầu được thực hiện với các url khác nhau làm tham số. Làm sao tôi biết cái nào là cái nào trong mảng? – screenshot345

+0

tôi nhận thấy lệnh này: System.Diagnostics.Process.GetProcessesByName ("ProcessName") [0] .StartInfo trong đó bao gồm tham số đối số, đó sẽ là tuyệt vời, nhưng nó quay ra để trống trên một tập tin đó không phải là được thực thi bởi C#. Có cách nào để sửa nó k? – screenshot345

10

Kiểm tra giá trị trả lại của Process.Start. Trong một số trường hợp, Process.Start có thể trả về false, trong trường hợp đó Id không được liên kết với nó.

Các vấn đề liên quan