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

decoalaa 18 Messages postés vendredi 1 février 2008Date d'inscription 10 mars 2009 Dernière intervention - 14 oct. 2008 à 16:21 - Dernière réponse : rabixpvb 35 Messages postés jeudi 4 novembre 2004Date d'inscription 5 juillet 2013 Dernière intervention
- 19 juil. 2011 à 18:38
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.
    

      
   
Afficher la suite 

Votre réponse

6 réponses

Zakki49 71 Messages postés vendredi 30 mai 2008Date d'inscription 18 mai 2011 Dernière intervention - 15 oct. 2008 à 18:00
+3
Utile
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();
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Zakki49
Zakki49 71 Messages postés vendredi 30 mai 2008Date d'inscription 18 mai 2011 Dernière intervention - 16 oct. 2008 à 13:23
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Zakki49
xmox667 357 Messages postés jeudi 8 juin 2006Date d'inscription 26 décembre 2011 Dernière intervention - 19 oct. 2008 à 08:43
+3
Utile
Salut,

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

A+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de xmox667
xmox667 357 Messages postés jeudi 8 juin 2006Date d'inscription 26 décembre 2011 Dernière intervention - 15 oct. 2008 à 08:07
0
Utile
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+
 
Commenter la réponse de xmox667
decoalaa 18 Messages postés vendredi 1 février 2008Date d'inscription 10 mars 2009 Dernière intervention - 16 oct. 2008 à 10:38
0
Utile
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.
Commenter la réponse de decoalaa
rabixpvb 35 Messages postés jeudi 4 novembre 2004Date d'inscription 5 juillet 2013 Dernière intervention - 19 juil. 2011 à 18:38
0
Utile
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
Commenter la réponse de rabixpvb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.