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 :

Une façon simple pour tuer un programme externe au cas où il serait en éxecution ?!


Sujet :

C++Builder

  1. #1
    Membre du Club Avatar de bnadem35
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 54
    Points
    54
    Par défaut Une façon simple pour tuer un programme externe au cas où il serait en éxecution ?!
    Salut à tous !
    J'ai cherché partout pour trouver des idées simples pour tuer/terminer un processus/programme externe (de préference sans perdre les sauvegardes éventuelles liées à ce programme) , sans pour autant trouver, sous C++ Builder, une façon simple pour atteindre cet objectif
    Merci infiniment de m'éclairer là-dessus au cas où vous auriez des idées/pistes
    Nous, les mathématiciens ... C'est fou ce que l'on peut écrire comme bêtises !

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Je propose le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall MyClose()
    {
    HANDLE hwd;
    hwd = FindWindow(0, "titre de la fenêtre de l'application à fermer");
    PostMessage(hwd, WM_CLOSE, 0, 0);//ou bien : SendMessage(hwd, WM_CLOSE, 0, 0)
    }
    Un appel de la fonction "Myclose()" après déclaration adéquate ferme l'application dont le titre de la fenêtre lui est donné en second paramètre .
    Cordialement .

  3. #3
    Membre du Club Avatar de bnadem35
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 54
    Points
    54
    Par défaut
    Merci beaucoup !
    Mais il se trouve qu'avec ce code : Une seule instance du programme à fermer est effectivement fermée
    Comment faire pour fermer toutes les instances relatives à une même application ?!
    Merci encore pour votre aide
    Nous, les mathématiciens ... C'est fou ce que l'on peut écrire comme bêtises !

  4. #4
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Fusil à pompe......ca vaporise, c'est puissant, ils souffrent pas, c'est nickel !
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  5. #5
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Perso, je viens de trouver ca.
    Je pense que c'est ce que tu recherches, il te suffit d'identifier ce que tu souhaites fermer comme application.

  6. #6
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut
    comme quoi avec une petite recherche dans le forum...
    on aura tout vu...
    Mais où est-ce???...
    ------------------------------------------------------
    n'oublies pas les balises [code ][/code ]
    et le Tag

  7. #7
    Membre du Club Avatar de bnadem35
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 54
    Points
    54
    Par défaut
    J'ai déjà vu et essayé ce code mais il ne permet de fermer que la dernière instance de l'application cible (Fonction "ShellExit()")
    De plus je trouve qu'il est trop gonflé pour cet objectif , car la fonction "FinWindow()" permet de résoudre le problème d'énumération d'applications actives de façon directe en renvoyant le handle concerné , d'après le code proposé par "moujahid" .
    Le problème , à mon avis , consiste à énumérer les instances actives de l'application cible par un processus concis et simple (direct) , puis les tuer un par un ou peut-être tous à la fois !
    Merci encore !
    Nous, les mathématiciens ... C'est fou ce que l'on peut écrire comme bêtises !

  8. #8
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Si tu souhaites absolument utiliser le code de moujahid, il te suffit alors de le mettre dans une boucle while pour tester tant qu'il existe d'application portant ce nom. S'il n'en existe pas, le handle retourné est NULL.
    Tu n'a donc qu'à faire un code de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    HANDLE hwd;
    do
    {
        hwd = FindWindow(0, "titre de la fenêtre de l'application à fermer");
        if(hwd != NULL)
            PostMessage(hwd, WM_CLOSE, 0, 0);//ou bien : SendMessage(hwd, WM_CLOSE, 0, 0)
    }
    while(hwd != NULL);

  9. #9
    Membre du Club Avatar de bnadem35
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 54
    Points
    54
    Par défaut
    Ah oui ! Beacoup Bandit_Boy
    Effectivement ,c'est le fait que le handle retourné par "FindWindow()" soit non-nul si la fenêtre de l'application cible est active qui est la clé de cette boucle , et c'est exactement ce que je cherchais !
    Merci encore ! C'est très sympa
    Nous, les mathématiciens ... C'est fou ce que l'on peut écrire comme bêtises !

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

Discussions similaires

  1. Définir une base numérique pour tout un programme
    Par stevin dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 21h36
  2. Réponses: 4
    Dernier message: 12/06/2007, 22h54
  3. Réponses: 6
    Dernier message: 28/04/2006, 09h16
  4. Réponses: 14
    Dernier message: 25/11/2005, 12h50
  5. Conseils sur une API simple pour Windows
    Par alejandro dans le forum Choisir un environnement de développement
    Réponses: 4
    Dernier message: 28/04/2005, 18h12

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