Terminer un processus

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 273 fois - Téléchargée 36 fois

Contenu du snippet

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

Source / Exemple :


#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.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
merci floche , ton code a été intégré en 2 tps 3 mvts et fonctionne
.

magicalement
Messages postés
16
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
11 avril 2006

#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;
}
Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1
"[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
Messages postés
10
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
9 mars 2006

hier ca marchait pas main la ca marche... pis j'ai rien toucher.... ... ..... vive microsoft!
Messages postés
97
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
11 mai 2008

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

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.

Du même auteur (zeratul67)