Gaswigue
Messages postés11Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 août 2003
-
14 août 2002 à 11:14
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 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.
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.
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;
soldier8514
Messages postés295Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention24 janvier 20141 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és10Date d'inscriptionjeudi 11 mars 2004StatutMembreDerniè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és97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 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és10Date d'inscriptionjeudi 11 mars 2004StatutMembreDerniè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és10Date d'inscriptionjeudi 11 mars 2004StatutMembreDerniè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és97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 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és1Date d'inscriptionlundi 4 août 2003StatutMembreDerniè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és209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 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és97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 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és199Date d'inscriptionlundi 22 juillet 2002StatutMembreDernière intervention14 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és11Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 août 2003 14 août 2002 à 16:09
Sa marche toujours pas :(
zeratul67
Messages postés97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 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és11Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 août 2003 14 août 2002 à 14:51
tu pourrais pas faire un truc genre shellExit ???
zeratul67
Messages postés97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 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és11Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 août 2003 14 août 2002 à 13:04
Dev-c++ et quincy 2000 , tou les deux on le meme prob :(
zeratul67
Messages postés97Date d'inscriptionmardi 9 avril 2002StatutMembreDernière intervention11 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és11Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 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'
:(
28 sept. 2006 à 17:50
.
magicalement
27 août 2005 à 13:09
#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;
}
1 mai 2005 à 20:01
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
8 mars 2005 à 22:35
8 mars 2005 à 20:51
Dis moi si ça marche :)
7 mars 2005 à 23:36
:S
(1) : error C2006: #include expected a filename, found '&'
Error executing cl.exe.
un ptit coup de main plz!
7 mars 2005 à 21:34
(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.
5 août 2003 à 18:37
(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é.
4 août 2003 à 22:46
(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?
7 mai 2003 à 11:44
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++
18 déc. 2002 à 18:37
18 déc. 2002 à 13:55
14 août 2002 à 16:09
14 août 2002 à 16:06
14 août 2002 à 14:51
14 août 2002 à 14:03
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.
14 août 2002 à 13:04
14 août 2002 à 11:32
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 ?
14 août 2002 à 11:14
[Linker error] undefined reference to `Process32First@8'
et
[Linker error] undefined reference to `Process32Next@8'
:(