wizard512
Messages postés459Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention11 mai 2013
-
18 févr. 2009 à 16:21
wizard512
Messages postés459Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention11 mai 2013
-
22 févr. 2009 à 22:51
Bonjour,
J'essaie en vain de compiler un petit bout de code me permettant de vérifier
si telle ou telle processus et bien en cour d'execution.
Mais j'obtiens 2 erreurs empechant le compilateur de compiler le code source.
Suite à une recherche j'ai découvert qu'il fallait ajouter la librairie "psapi.lib"
au projet se que j'ai donc immédiatement fait puis j'ai aussi ajouter le header psapi.h
en include mais cella n'a absolument rien changer donc j'aimerais savoir si quelqu'un
avait une solution éventuellement pour me permettre de compiler se code source ?
// Determine si un processus est en cours d'execution ou pas
BOOL process_exists(const char* monProcess)
{
DWORD processes[200], nb_processes;
char process_name[100];
int i;
HANDLE hprocess;
EnumProcesses(processes, sizeof(processes),&nb_processes);
//On teste tous les processus pour voir si leur nom correspond
for(i=0;i<nb_processes/sizeof (DWORD);i++)
{
hprocess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[i]);
//Prend le nom du processus et le met dans process_name
GetModuleBaseName(hprocess, NULL, process_name, sizeof(process_name) );
CloseHandle(hprocess);
//Ce processus est il le même que celui demandé
if(!strcasecmp(process_name, monProcess)){
return TRUE;
}
}
return FALSE;
}
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 18 févr. 2009 à 18:36
Salut,
[Linker error]
Linker. Lieur. Tu as une erreur à l'édition des liens. L'édition des liens a lieu après la compilation. C'est la phase ou les divers .o sont liés entre eux et que pas mal d'adresses de symboles sont résolus.
Les deux symboles qu'il te manque sont dans des dlls de Windows. Il te faut donc que tu mette le .lib ou .a décrivant cette dll en entrée du lieur, quelque part dans les options de dev-cpp (Soit dit en passant, tu connais Code::Blocks ? C'est une très bonne alternative dans le même esprit). Dans ton cas, il s'agit probablement de Psapi.lib.
Pour toutes les fonctions,il y a un tableau à la fin qui dit si la fonction est unicode, qui donne le .h, le .lib, les versions minimales, la dll...
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 21 févr. 2009 à 09:23
Pourquoi -lPsapi et pas Psapi ? Tu utilises dev-cpp, donc gcc, donc ld pour le link. Donc il faut consulter la doc de ld. ld propose l'option -lar pour lier avec une lib ar.
Concernant ton problème d'application qui n'affiche rien... Je crois me souvenir que cela peut être dû au fait que tu compiles une application en mode GUI, et pas en mode console. Le system("pause") est affiché dans une console car en interne, c'est en gros un CreateProcess de cmd /C pause qui est exécuté. Bilan ça te lance une (nouvelle) console avec pause dedans. Si tu avais déjà une console, cmd s'exécuterait dans la console existante sans problème.
Ton .exe est compilé en mode GUI/Windows. Il faut que tu changes cela dans les options de compilation pour que ton exe soit console.
wizard512
Messages postés459Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention11 mai 20132 18 févr. 2009 à 22:34
Salut,
Le define ne change rien comme l'inclusion du fichier psapi.lib ( que j'avais déja fait ).
Je ne vois vrément pas d'ou pourrais venir l'erreur,
peut etre qu'il faut que j'inclus en plus une autre librairie voir carrément un autre entete?
Au passage c'est bien le fichier psapi.lib qu'il faut inclure au projet?
Parceque dans ton screen c'est pas vrément ce que j'ai vu,
puis tu dis -lPsapi au lieu de Psapi, une mauvaise compréhention
de ma par ou une erreur de frappe de la tienne?
Oui je connais Code::Blocks mais j'ai plus tendance
aprés chaque formatage à utilisé par réflexe Dev C++ vieu réflexe ^^"
wizard512
Messages postés459Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention11 mai 20132 20 févr. 2009 à 01:13
Changement dans l'inclusion de la librairie suite a une petite recherche,
j'ai pu observer que certaine personne on mis
-lPsapi au lieu de
psapi.lib
donc aprés en avoir fait de même le code source a enfin étais compiler et l'exécuatable créer !
( Meme si j'ai pas bien compris pourquoi menfin bref ! )
Mais, mais...le résultat n'est pas du tous celui attendu mais vrément pas du tous,
on dirait que la fonction process_exists auquel on fait plusieurs fois apelle dans
le code source n'est enfaite pas appelé ! Car dans la fenetre dos du programme on n'obtient
que le message dû a la ligne de code suivante :
system( "pause" ) ;
et on à aucune trace des oui et non plus haut, donc j'ai décidé de recompilé le code source
mais cette fois en insérent dans cette fonction un petit : puts( "fonction" ) ;
et je n'obtient toujours aucun autre message que le message systeme !
Ma fonction n'est donc pas appelé? Comment cella se fait il?!