3

提前感谢您的所有帮助!

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

3 回答 3

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;
}
于 2010-06-14T16:28:55.397 回答
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.
    }
于 2010-06-14T16:28:21.167 回答
0

我不确定我是否理解正确,但是Process.Start(至少你正在使用的重载)会返回 aProcess然后它Process有一个Id属性。

于 2010-06-14T16:29:45.257 回答