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

MFC Discussion :

[mfc]détruire un processus


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut [mfc]détruire un processus
    Bonjour ,
    j'ai créé une petite application qui permet de trouver le process id ainsi que le handle du processus que je veux détruire.

    J'aimerais connaitre la fonction qui permet de le détruire sachant que cet executable ne possède pas de fenetre.

    merci

  2. #2
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    essaie TerminateProcess

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    salut ,
    j'ai regardé dans la msdn et c'est écrit que terminateprocess doit etre utiliser en dernier recours , il conseil d'utiliser exitprocess.

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    ExitProcess
    The ExitProcess function ends a process and all its threads.

    VOID ExitProcess(
    UINT uExitCode // exit code for all threads
    );
    tu fais comment pour dire quel process tu veux arreter ???

    alors que
    TerminateProcess
    The TerminateProcess function terminates the specified process and all of its threads
    il y a le mot : specified

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    salut ,
    tu avais raison exitprocess ne permet pas de terminer un autre processus que le sien.
    par contre , je n'arrive pas à terminer le processus , la fonction terminateprocess me renvoie toujours le code 0 qui signifie une erreure.

    peus tu s'il te plait , le regarder et me dire si tu vois une erreure.

    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
     
    if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), 
                 &cbNeeded) )
      {
            GetModuleBaseName( hProcess, hMod, szProcessName, 
                                  sizeof(szProcessName) );
     
          if(strcmp(szProcessName,nom_processus) == 0)
         {
          *handle_processus = hProcess;	
     
         BOOL ret_terminate_process;
         DWORD lpExitCode;
     
         ret_terminate_process = GetExitCodeProcess(hProcess , &lpExitCode);
     
         if(ret_terminate_process == 0)
         {
         //MessageBox("Erreur lors de l'execution du logiciel de gestion de la télécommande.Veuillez le réinstaller!!!!",NULL,MB_OK|MB_ICONSTOP);
        //message_telecommande.utilisation_telecommande = 0;
           }
     
             int ret;
              ret = TerminateProcess(hProcess,lpExitCode);

    je ne comprends vraiment pas pourqoui le processus ne s'interrompt pas , peus tu m'aider.
    salut

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    excuse moi , mais je ne t'es pas donnée les explications du code plus haut . le code du messageprécédent permets de trouver le handle de l'executable recherché, je fais un enumprocess() , puis je cherche les nom de tous les process puis quand le nom est bon (strcmp == 0) alors j'essaye de le détruire.


    je ne comprends pas pourquoi c'a ne marche pas , j'ai essayé de detruire plusieurs executable mais aucun ne marche.

    salut

  7. #7
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    quand tu essaies de les detruire par le gestionnaire de tache, ca fonctionne ??? parce qu'on peut pas tout arreter non plus

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut, c'est pas si simple que ça il faut voir avec les tokenprivilege (droit system) ,tu devrais jetter un oeil a cet article qui montre changer les priviliges du prog en cours .
    http://www.codeguru.com/system/killer.html


  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    Je ne comprends pas , sur certains sites ils utilisent la même méthodes que moi , pourtant l'executable que je veux arreter n'est pas protéger , il s'agit d'un executable que j'ai créé en visual c++.il s'arrete sans problème via le gestionnaire des tâches.

    si quelqu'un a un tuyau ou un exemple d'arret ,n'hésiter pas car je suis bien coinçé .

    merci

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    Je ne comprends pas , sur certains sites ils utilisent la même méthodes que moi , pourtant l'executable que je veux arreter n'est pas protéger , il s'agit d'un executable que j'ai créé en visual c++.il s'arrete sans problème via le gestionnaire des tâches.

    si quelqu'un a un tuyau ou un exemple d'arret ,n'hésiter pas car je suis bien coinçé .

    merci

  11. #11
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    regarde avec GetLastError pour connaitre la raison

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    je viens de vérifier l'erreur avec getlasterror et il me donne cette erreur:

    5 Access is denied. ERROR_ACCESS_DENIED

    je pense que tu as raison , la solution est de s'approprié les droits d'accès mais là c'est plus difficille car je ne comprends pas comment réaliser cette fonction.

    en tout cas merci pour ton tuyau.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    Salut ,
    je viens d'utiliser la gestion ds privilèges et là ca fonctionne super bien.
    encore une fois un grand merci car ton lien m'a été d'un grand secours.

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 18
    Dernier message: 16/03/2005, 17h22
  3. [MFC] attendre fin de demarrage d'un processus
    Par pitch21 dans le forum MFC
    Réponses: 16
    Dernier message: 14/10/2004, 09h35
  4. [MFC] Attendre l'arrêt d'un processus !!
    Par Djoz dans le forum MFC
    Réponses: 6
    Dernier message: 29/07/2003, 12h03
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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