使用C#Process.Start获取程序的进程ID

时间:2010-06-14 16:23:06

标签: visual-studio-2010 c#-4.0 putty

提前感谢您的所有帮助!

我目前正在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);
}

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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.
    }

答案 2 :(得分:0)

我不确定我是否理解正确,但Process.Start(至少您正在使用的重载)将返回Process,然后Process有{{1}属性。