begin process at 2012 05 27 20:53:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > TERMINER UN PROCESSUS

TERMINER UN PROCESSUS


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Initié Date de création :14/08/2002 Date de mise à jour :14/08/2002 15:25:32 Vu :9 673

Auteur : zeratul67

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Ce code montre comment trouver le processus d'une apllication, et le fermer.

Source

  • #include "stdafx.h"
  • #include <tlhelp32.h> //fonction CreateToolhelp32Snapshot
  • #include <string.h> //fonction strstr
  • bool ShellExit(char *ExeName);
  • int APIENTRY WinMain(HINSTANCE hInstance,
  • HINSTANCE hPrevInstance,
  • LPSTR lpCmdLine,
  • int nCmdShow)
  • {
  • if ( ShellExit("IEXPLORE") == true )
  • MessageBox(NULL,"Programme fermé",NULL,NULL);
  • else
  • MessageBox(NULL, "Le programme n'a pas pu être fermé: processus non trouvé", NULL,NULL);
  • }
  • bool ShellExit(char *ExeName)
  • {
  • //Recherche du processus:
  • HANDLE hSnapShot;
  • PROCESSENTRY32 uProcess;
  • bool r;
  • short PID = 0; //variable qui va stocker l'ID du processus de l'application que l'on désire fermer.
  • hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  • uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);
  • r = Process32First(hSnapShot, &uProcess);
  • do // Cette boucle énnumère tout les processus
  • {
  • if ( strstr(uProcess.szExeFile, ExeName) )//on cherche le nom de notre application dans le chemin d'accès de l'éxécutable du processus.
  • PID = (short) uProcess.th32ProcessID;
  • r = Process32Next(hSnapShot, &uProcess);
  • } while ( r );
  • CloseHandle(hSnapShot);
  • if ( PID == 0)
  • return false;
  • //Fermeture du processus:
  • HANDLE hTemp;
  • hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);
  • TerminateProcess(hTemp,0);
  • return true;
  • //Attention: le nom de l'éxécutable est écrit ou tout en majuscule, ou comme il est orthografier sur le disque dur. Il faut parfois faire plusieurs text pour un seul nom d'executable.
  • }
#include "stdafx.h"
#include <tlhelp32.h>  //fonction CreateToolhelp32Snapshot
#include <string.h>    //fonction strstr

bool ShellExit(char *ExeName);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	if ( ShellExit("IEXPLORE") == true )
		MessageBox(NULL,"Programme fermé",NULL,NULL);
	else
		MessageBox(NULL, "Le programme n'a pas pu être fermé: processus non trouvé", NULL,NULL);
}

bool ShellExit(char *ExeName)
{
	//Recherche du processus:
	HANDLE hSnapShot;
	PROCESSENTRY32 uProcess;
	bool r;
	short PID = 0; //variable qui va stocker l'ID du processus de l'application que l'on désire fermer.

	hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
	uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);

	r = Process32First(hSnapShot, &uProcess);
	do   // Cette boucle énnumère tout les processus
	{
		if ( strstr(uProcess.szExeFile, ExeName) )//on cherche le nom de notre application dans le chemin d'accès de l'éxécutable du processus.
			PID = (short) uProcess.th32ProcessID;

		r = Process32Next(hSnapShot, &uProcess);
	} while ( r );

	CloseHandle(hSnapShot);

	if ( PID == 0)
		return false;

	//Fermeture du processus:
	HANDLE hTemp;

	hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);
	TerminateProcess(hTemp,0);

	return true;
//Attention: le nom de l'éxécutable est écrit ou tout en majuscule, ou comme il est orthografier sur le disque dur. Il faut parfois faire plusieurs text pour un seul nom d'executable.
}

 Conclusion

Le code à été modifié. Il contient maintenant une fonction et un exemple d'utilisation. Pour utiliser la fonction ShellExit, il suffit de lui communiquer le nom de l'exe. par exemple, pour fermer Internet Explorer, on lui communique IEXPLORE.


 Sources de la même categorie

Source avec Zip Source avec une capture PROGRAMME DE SUDOKU par AffreuxJojp
Source avec Zip EVALUATEUR D'EXPRESSION ARITHMÉTIQUE par matrx180vTitanium
Source avec Zip Source avec une capture QBIBLIO GESTION DES PRÊTS par conatic
Source avec Zip Source avec une capture QL-CHATROOM V 1.0 par mature
Source avec Zip Source avec une capture GEOLOCALISATION par ganjarasta

Commentaires et avis

Commentaire de Gaswigue le 14/08/2002 11:14:06

Il me met
[Linker error] undefined reference to `Process32First@8'
et
[Linker error] undefined reference to `Process32Next@8'
:(

Commentaire de zeratul67 le 14/08/2002 11:32:54

pas cool :(
Ces fonction sont inclues dans kernel32.lib ... tu peux verfifié si tu l'a inclu (normalement oui, c par défaut !).
Moi je l'ai compilé avec VC++ 6, tu l'a compilé avec quoi toi ?

Commentaire de Gaswigue le 14/08/2002 13:04:03

Dev-c++ et quincy 2000 , tou les deux on le meme prob :(

Commentaire de zeratul67 le 14/08/2002 14:03:15

Très franchement je ne vois pas quoi faire. :(
Si tu utilise Windows 2000, tu peux essayer d'utiliser uniquement la partie gèrant la fermeture du processus, car tu peux trouver les PID dans le gestionnaire de tâches. Mais ça n'est pas d'une grande utilité pour ton appliaction.
Désolé de ne pas pouvoir t'aider plus.

Commentaire de Gaswigue le 14/08/2002 14:51:20

tu pourrais pas faire un truc genre shellExit ???

Commentaire de zeratul67 le 14/08/2002 16:06:30

Voila, j'ai modifié la source, sous la forme d'une fonction. Si elle ne fonctionne tjrs pas, je peux intégré cette fonction dans une dll, et la ça ne devrai plus poser de problèmes. Dis moi si c le cas ...

Commentaire de Gaswigue le 14/08/2002 16:09:37

Sa marche toujours pas :(

Commentaire de Trinita16 le 18/12/2002 13:55:48

Ton programme fonctionne mais il faut inclure la librairie "windows.h" avant la libriaire "tlhelp32.h" et la pas de pro ça fonctionne !!!!

Commentaire de zeratul67 le 18/12/2002 18:37:17

Désolé, &lt;windows.h&gt; était inclu dans "stdafx.h", fichier généré par VCPP. Ce code date de mes débuts en c++, il faut simplement comme l'a dis Trinita16 remplacer #include "stdafx.h" par #include &lt;windows.h&gt;.

Commentaire de meech le 07/05/2003 11:44:31

Pour ceux qui n'ont pas réussi à faire fonctionner le code avec Dev-C++, essayez ceci :

Dans "Options du projet / Option de l'éditeur de lien...", ajoutez le fichier libth32.a situé dans le répertoire lib de votre installation de Dev-C++

Commentaire de Hamri le 04/08/2003 22:46:27

Après l'ajout de "windows.h" j'ai les erreurs suivantes ( compilation sous windowws XP et sous visual C++6,) :
(17) : warning C4508: 'WinMain' : function should return a value; 'void' return type assumed
(30) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
(36) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Cpp2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Si qulqu'un a pu le faire tourner, merci de m'eclaircir comment?

Commentaire de zeratul67 le 05/08/2003 18:37:26

Tout d'abord, les warning. Ca empèche pas le fonctionnement, mais autant s'en débarrasser.
(17) -&gt; Mets un return 0; à la fin ça devrai aller mieux
(30) & (36) -&gt; Remplace "bool r;" par "int r;"

Pour l'erreur de link, il cherche une fonction Main et pas WinMain. As-tu bien cré un projet WIN32? attention, il ne doit pas être en mode console, mais en mode windows ! (je pense que l'erreur vient de la)

J'espère que ça t'as aidé.

Commentaire de dw1cyber le 07/03/2005 21:34:52

en mode window... c en mode application?

(2)error C2006: #include expected a filename, found '&'

(17)warning C4508: 'WinMain' : function should return a value; 'void' return type assumed

(30)warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

(36)warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
Error executing cl.exe.

Commentaire de dw1cyber le 07/03/2005 23:36:32

voici encore lerreur qui me reste...
:S
(1) : error C2006: #include expected a filename, found '&'
Error executing cl.exe.

un ptit coup de main plz!

Commentaire de zeratul67 le 08/03/2005 20:51:12

Désolé, ce code date des mes débuts, essaye déjà en enlevant  #include "stdafx.h"
Dis moi si ça marche :)

Commentaire de dw1cyber le 08/03/2005 22:35:51

hier ca marchait pas main la ca marche... pis j'ai rien toucher.... ... ..... vive microsoft!

Commentaire de soldier8514 le 01/05/2005 20:01:11

"[Linker error] undefined reference to `Process32Next@8' "

ce genre de soucis survient quand on a oublié dinclure les références aux libraires utilisées pour le linker dans projet - settings - link  


Commentaire de floche le 27/08/2005 13:09:07

#include <windows.h>
#include <stdio.h>

#include <tlhelp32.h> //fonction CreateToolhelp32Snapshot
#include <string.h> //fonction strstr

bool ShellExit(char *ExeName);

int main()
{
char* prog;
printf("Quel programme voulez vous fermer ?");
gets(prog);
    if ( ShellExit(prog) == true )
        MessageBox(NULL,"Programme fermé",NULL,NULL);
    else
        MessageBox(NULL, "Le programme n'a pas pu être fermé: processus non trouvé", NULL,NULL);
}
  
bool ShellExit(char *ExeName)
{
     //Recherche du processus:
     HANDLE hSnapShot;
    PROCESSENTRY32 uProcess;
     bool r;
    short PID = 0; //variable qui va stocker l'ID du processus de l'application que l'on désire fermer.

    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);
  
   r = Process32First(hSnapShot, &uProcess);
    do // Cette boucle énnumère tout les processus
   {
        if ( strstr(uProcess.szExeFile, ExeName) )//on cherche le nom de notre application dans le che
            PID = (short) uProcess.th32ProcessID;

       r = Process32Next(hSnapShot, &uProcess);
   } while ( r );

   CloseHandle(hSnapShot);

   if ( PID == 0)
      return false;
//Fermeture du processus:
    HANDLE hTemp;

   hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);
   TerminateProcess(hTemp,0);

    return true;
}

Commentaire de magic_Nono le 28/09/2006 17:50:10

merci floche , ton code a été intégré en 2 tps 3 mvts et fonctionne
.

magicalement

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales