提前感谢您的所有帮助!
我目前正在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);
}
答案 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}属性。