TERMINER UN PROCESSUS

Gaswigue Messages postés 11 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 août 2003 - 14 août 2002 à 11:14
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 28 sept. 2006 à 17:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/9972-terminer-un-processus

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

magicalement
cs_floche Messages postés 16 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 11 avril 2006
27 août 2005 à 13:09
#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;
}
soldier8514 Messages postés 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 1
1 mai 2005 à 20:01
"[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
dw1cyber Messages postés 10 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 9 mars 2006
8 mars 2005 à 22:35
hier ca marchait pas main la ca marche... pis j'ai rien toucher.... ... ..... vive microsoft!
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
8 mars 2005 à 20:51
Désolé, ce code date des mes débuts, essaye déjà en enlevant #include "stdafx.h"
Dis moi si ça marche :)
dw1cyber Messages postés 10 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 9 mars 2006
7 mars 2005 à 23:36
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!
dw1cyber Messages postés 10 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 9 mars 2006
7 mars 2005 à 21:34
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.
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
5 août 2003 à 18:37
Tout d'abord, les warning. Ca empèche pas le fonctionnement, mais autant s'en débarrasser.
(17) -> Mets un return 0; à la fin ça devrai aller mieux
(30) & (36) -> 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é.
cs_Hamri Messages postés 1 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 4 août 2003
4 août 2003 à 22:46
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?
meech Messages postés 209 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 14 août 2007
7 mai 2003 à 11:44
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++
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
18 déc. 2002 à 18:37
Désolé, <windows.h> é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 <windows.h>.
Trinita16 Messages postés 199 Date d'inscription lundi 22 juillet 2002 Statut Membre Dernière intervention 14 juin 2006
18 déc. 2002 à 13:55
Ton programme fonctionne mais il faut inclure la librairie "windows.h" avant la libriaire "tlhelp32.h" et la pas de pro ça fonctionne !!!!
Gaswigue Messages postés 11 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 août 2003
14 août 2002 à 16:09
Sa marche toujours pas :(
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
14 août 2002 à 16:06
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 ...
Gaswigue Messages postés 11 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 août 2003
14 août 2002 à 14:51
tu pourrais pas faire un truc genre shellExit ???
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
14 août 2002 à 14:03
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.
Gaswigue Messages postés 11 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 août 2003
14 août 2002 à 13:04
Dev-c++ et quincy 2000 , tou les deux on le meme prob :(
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
14 août 2002 à 11:32
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 ?
Gaswigue Messages postés 11 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 août 2003
14 août 2002 à 11:14
Il me met
[Linker error] undefined reference to `Process32First@8'
et
[Linker error] undefined reference to `Process32Next@8'
:(