2010-06-14 190 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属性。