Fermer un processus lance par une commande dos [Résolu]

Signaler
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
10 mars 2009
-
Messages postés
35
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
Bonjour,

J'ai fait un programme en c# pour lancer une commande dos (dans un fichier .bat) pour ouvrir un fichier excel et j'aimerais bien fermer le fichier excel ainsi que la fenêtre dos après l'exécution d'une macro automatique que j'ai dans mon excel.
Voila le code que j'ai fait :

private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.ProcessStartInfo lancer_bat = new System.Diagnostics.ProcessStartInfo();
        
            lancer_bat.FileName = @"D:\Documents\Visual Studio 2008\Projects\ENDK\Lancer_commande.bat";
           
            System.Diagnostics.Process.Start(lancer_bat);
            }

      
Merci pour vos reponse.
    

      
   

6 réponses

Messages postés
71
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
18 mai 2011

Le mieux c'est de mettre le using System.Diagnostics
de declarer un objet process, et tu pourra le fermer avec la commande .close()

comme ceci :

using System.Diagnostics;

            //Création de ton objet
            Process o_Dos;                      
      
           //tu instancies et tu configures tes paramètres
            o_Dos = new Process();
            o_Dos.StartInfo.FileName = "tonfichier.bat";
            o_Dos.StartInfo.RedirectStandardOutput = true;
            o_Dos.StartInfo.RedirectStandardInput = true;
            o_Dos.StartInfo.UseShellExecute = false;
            o_Dos.StartInfo.CreateNoWindow = true;
            //Tu lances ton process

            o_Dos.Start();  
              
            /* tu fais ton traitement*/

          //Et tu fermes
            o_Dos.Close();
Messages postés
71
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
18 mai 2011

Mais l'excel.exe, tu lelance avec ton fichier .bat non?

Pourquoi ne pas killer le process via celui-ci?
puisque de toute façon tu ce que lance ton process c'est que ton fichier bat
Messages postés
357
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
26 décembre 2011
3
Salut,

N'oubliai pas "Réponse accepter" si la réponse te convient

A+
Messages postés
357
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
26 décembre 2011
3
Salut,
Peut devrait lancer et arrêter Excel directement sans passer par un fichier Bat.
Ce lien pourrait t'aider [http://www.vbfrance.com/codes/DEMARRER-ARRETER-APPLICATION_39471.aspx [Lien]]
http://www.vbfrance.com/codes/DEMARRER-ARRETER-APPLICATION_39471.aspx
A+
 
Messages postés
18
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
10 mars 2009

Bonjour,
merci pour vos réponses, zakki49, en fait j'avais fait la même chose que ce que tu m'a dit mais j'arrive toujours pas a fermer l'excel.exe.
J'ai essayé la fonction .kill , ça ferme l'application mais  avant que la macro automatique ne s'exécute.
Messages postés
35
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
5 juillet 2013

using System.Diagnostics;

foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.StartsWith("excel")||clsProcess.ProcessName.StartsWith("cmd"))
clsProcess.Kill();
}
// Tuera tous les cmd (donc les bats) ainsi que l'excel


rabix