2010-06-14 48 views
3

在此先感謝您的幫助!獲取程序的進程ID以C#Process.Start開始

我目前正在開發一個C#2010中的程序,該程序啓動PLink(Putty)來創建SSH隧道。我試圖讓程序能夠跟蹤每個打開的隧道,以便用戶可以終止那些不再需要的實例。我目前使用System.Diagnostics.Process.Start來運行PLink(目前正在使用Putty)。我需要確定每個plink程序啓動時的PID,以便用戶可以隨意終止它。

問題是如何做到這一點,我使用正確的.Net名稱空間還是有更好的?

代碼片斷:

private void btnSSHTest_Click(object sender, EventArgs e) 
{ 
    String puttyConString; 
    puttyConString = "-ssh -P " + cboSSHVersion.SelectedText + " -" + txtSSHPort.Text + " -pw " + txtSSHPassword.Text + " " + txtSSHUsername.Text + "@" + txtSSHHostname.Text; 
    Process.Start("C:\\Program Files (x86)\\Putty\\putty.exe", puttyConString); 
} 

回答

4

你可以這樣做:

private void btnSSHTest_Click(object sender, EventArgs e) 
{ 
    String puttyConString; 
    puttyConString = "-ssh -P " + cboSSHVersion.SelectedText + " -" + txtSSHPort.Text + " -pw " + txtSSHPassword.Text + " " + txtSSHUsername.Text + "@" + txtSSHHostname.Text; 
    Process putty = Process.Start("C:\\Program Files (x86)\\Putty\\putty.exe", puttyConString); 
    int processId = putty.Id; 
} 
+0

正是我所期待的。謝謝! – 2010-06-14 17:03:02

2

的Process.Start返回一個Process對象。使用Process.Id屬性查找該ID。

private void btnSSHTest_Click(object sender, EventArgs e) 
    { 
     String puttyConString; 
     puttyConString = "-ssh -P " + cboSSHVersion.SelectedText + " -" + txtSSHPort.Text + " -pw " +  txtSSHPassword.Text + " " + txtSSHUsername.Text + "@" + txtSSHHostname.Text; 
     Process started = Process.Start("C:\\Program Files (x86)\\Putty\\putty.exe", puttyConString); 
     //do anything with started.Id. 
    } 
+0

謝謝你,正是我在找什麼! – 2010-06-14 17:04:03

0

我不知道如果我理解正確,但Process.Start(至少你使用過載)將返回Process,然後將該Process有一個Id屬性。