IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

test de l'exectuion d'un bat par Shellexecute


Sujet :

C++Builder

  1. #1
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut test de l'exectuion d'un bat par Shellexecute
    Bonjour,

    je vous explique mon problème.

    J'ai un programme qui execute des fichier bat. Certain de ces fichier sont particulièrement long(de l'odre de 1 h 30). pour l'instant j'utilsie la commande ShellExecute.

    j'aimerai que mon porgramme puisse afficher une boite de dialogue qui me dise si le fichier et encore en train de s'exécuter et que l'on ne puisse pas continuer l'exécution du programme pendant l'exécution du batch.

    Je pensais reprendre le process, et checker régulièprement que le batch et terminer, je ne sais pas si comment le faire ni si c est al bonne solution.

    Pouvez-vous m'aider ?
    @@++

  2. #2
    Membre régulier
    Avatar de bebeours
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 103
    Points : 123
    Points
    123

  3. #3
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Alors j'ai essayer de comprende quelque chose, mais en vain

    en fait j'crée un batch et j'ai fait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    STARTUPINFO si2; 
    PROCESS_INFORMATION pi2; 
    memset(&pi2, 0, sizeof(pi2)); 
    memset(&si2, 0, sizeof(si2)); 
     
    STARTUPINFO si3; 
    PROCESS_INFORMATION pi3; 
    memset(&pi3, 0, sizeof(pi3)); 
    memset(&si3, 0, sizeof(si3)); 
     
    si2.cb = sizeof(si2);
    if (!CreateProcess(0,"test1.bat", 0, 0, 0, 0, 0, 0, &si2, &pi2))
    {
     
       ShowMessage( "peut pu créer de processus");
    }
     
    WaitForSingleObject(pi2.hThread,INFINITE);
    CloseHandle( pi2.hProcess );
    CloseHandle( pi2.hThread );
     
    si3.cb = sizeof(si3);
    if (!CreateProcess(0,"test1.bat", 0, 0, 0, 0, 0, 0, &si3, &pi3))
    {
     
       ShowMessage( "peut pu créer de processus");
    }
     
    WaitForSingleObject(pi3.hThread,INFINITE); 
    CloseHandle( pi3.hProcess ); 
    CloseHandle( pi3.hThread );
    }

    Si quelqu'un pourrait déja m'expliquer cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    STARTUPINFO si2; 
    PROCESS_INFORMATION pi2; 
    memset(&pi2, 0, sizeof(pi2)); 
    memset(&si2, 0, sizeof(si2));
    Je ne comprend pas du tout ce que fait cette partie du code à quoi elle sert ?


    Cela non plus, je capte pas à quoi sa sert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WaitForSingleObject(pi3.hThread,INFINITE);
    et cela non plus, peut être que je comprendrais mieux ce code après vos explications !!!

    en tout cas merci d'avance à ceux qui vont essayer de m'expliquer.
    @@++

  4. #4
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    j'ai un autre exemple qui te paraitra peut etre plus clair :


  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    STARTUPINFO si2;
    PROCESS_INFORMATION pi2;
    memset(&pi2, 0, sizeof(pi2));
    memset(&si2, 0, sizeof(si2));
    Initialisation des zones STARTUPINFO et PROCESS_INFO, on passe des variables "propres" à la fonction ShellExecute

    si2.cb = sizeof(si2);
    On donne la taille de la structure passée, suivant les versions de Windows ou de l'API utilisée (je n'ai pas la doc sous les yeux) ce n'est pas la même.

    WaitForSingleObject(pi3.hThread,INFINITE);
    On attend que le process dont le handle est pi3.hThread soit terminé, il n'y a pas de limitation de durée
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Freeze

    Merci poru ton lien je vais voir tester tout sa dés que je peux.

    trap_d
    STARTUPINFO si2;
    PROCESS_INFORMATION pi2;
    memset(&pi2, 0, sizeof(pi2));
    memset(&si2, 0, sizeof(si2));

    Initialisation des zones STARTUPINFO et PROCESS_INFO, on passe des variables "propres" à la fonction ShellExecute
    Je vais faire le pénible mais pourrait être plus précis sur le memset ?
    et je ne vois pas ce que tu entend pas "on passe des variables propres" pourrait-tu être plus explicite !!

    Merci
    @@++

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Le "memset" rempli la zone passée en premier argument avec le nombre passé en deuxième argument sur la longeur passée en troisième argument.
    Ici le memset remplit de 0 toute les zones pi2 et si2, c'est pour ça que je parle de "variable propre". Il faudrait que tu regardes la doc sur STARTUPINFO et PROCESS_INFORMATION sur Google, c'est trop long pour les afficher ici.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Membre habitué
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Points : 167
    Points
    167
    Par défaut Re: test de l'exectuion d'un bat par Shellexecute
    Bonsoir,

    Citation Envoyé par Seboubou86
    j'aimerai (...) que l'on ne puisse pas continuer l'exécution du programme pendant l'exécution du batch.
    J'ai lu tous vos messages ... pourquoi tu utilises ShellExecute
    (Ai-je mal compris le problème ?)

    Regarde spawnl avec pour paramètre P_WAIT (dans process.h)

    Bonne Chance, (désolé si je réponds à côté )
    Mathieu
    Développeur confirmé C++, Java, Python, JS.

  9. #9
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Trap D

    Merci pour cette explication !!

    Alacazam
    Ben en fait j'utilise Shellexcute, parce que je savasi aps au début que une fois le batch lancer le programme continuerais son exécution.
    Et pis je connais pas grand chose je suis encore jsute un débutant


    Je vais donc regarder su coté de spawl.
    Merci beaucoup
    @@++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Création d'un script de test disque dur et envoyant le résultat par email
    Par dominik stev dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 15/10/2012, 20h36
  2. Lancement Fichier ".bat" par Pack 2003 et 2007
    Par stsym dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/02/2012, 17h31
  3. Lancer JBoss via un autre .bat par défaut
    Par fjouatte dans le forum Wildfly/JBoss
    Réponses: 6
    Dernier message: 04/11/2011, 16h01
  4. Lancer/Démarrer un .bat par un service Windows
    Par sbrillard dans le forum Windows XP
    Réponses: 1
    Dernier message: 15/02/2009, 19h05
  5. Réponses: 3
    Dernier message: 26/01/2007, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo