Получить идентификатор процесса программы, запущенной с C # Process.Start - PullRequest
3 голосов
/ 14 июня 2010

Заранее благодарим за всю вашу помощь!

В настоящее время я разрабатываю программу на C # 2010, которая запускает PLink (Putty) для создания SSH-туннеля. Я пытаюсь сделать программу способной отслеживать каждый открытый туннель, чтобы пользователь мог завершить те экземпляры, которые больше не нужны. В настоящее время я использую System.Diagnostics.Process.Start для запуска PLink (в настоящее время используется Putty). Мне нужно определить PID каждой программы plink при ее запуске, чтобы пользователь мог прекратить ее по своему желанию.

Вопрос в том, как это сделать, и я использую правильное пространство имен .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 ]

4 голосов
/ 14 июня 2010

Вы можете сделать это:

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;
}
2 голосов
/ 14 июня 2010

Process.Start возвращает объект Process. Используйте свойство Process.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 голосов
/ 14 июня 2010

Я не уверен, правильно ли я понимаю, но Process.Start (по крайней мере, используемая вами перегрузка) вернет Process, а затем Process имеет свойство Id.

...