2010-06-14 13 views
3

Merci d'avance pour toute votre aide!Obtenir l'ID de processus du programme démarré avec C# Process.Start

Je développe actuellement un programme en C# 2010 qui lance PLink (Putty) pour créer un tunnel SSH. J'essaie de rendre le programme capable de garder une trace de chaque tunnel qui est ouvert afin qu'un utilisateur puisse mettre fin à ces instances qui ne sont plus nécessaires. J'utilise actuellement System.Diagnostics.Process.Start pour exécuter PLink (actuellement Putty étant utilisé). J'ai besoin de déterminer le PID de chaque programme de plink quand il est lancé afin qu'un utilisateur puisse le terminer à volonté. La question est de savoir comment faire cela et est-ce que j'utilise le bon espace de noms .Net ou y at-il quelque chose de mieux?

extrait de code:

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); 
} 

Répondre

4

Vous pouvez le faire:

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

exactement ce que je cherchais. Je vous remercie! –

2

Process.Start retourne un objet de processus. Utilisez la propriété Process.Id pour connaître l'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

merci, exactement ce que je cherchais! –

0

Je ne sais pas si je comprends bien, mais Process.Start (au moins la surcharge que vous utilisez) retournera un Process puis que Process a une propriété Id.