Accueil > Forum > > > > Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?
Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?
mercredi 18 février 2009 à 16:21:05 |
Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

wizard512
|
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 ?
Le code source : #include <windows.h> #include <string.h> #include <psapi.h> #include <stdio.h>
// 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; }
int main() { if(process_exists("nom_process.exe")){ printf("1. oui"); } else{ printf("1. non"); } printf( "\n" ); if(process_exists("main.exe")){ printf("2. oui"); } else{ printf("2. non"); } system( "pause" ); return 1; }
Voici les erreurs obtenue lors de la tentative de compilation par Dev C++ :
[Linker error] undefined reference to `EnumProcesses@12' [Linker error] undefined reference to `GetModuleBaseNameA@16' ld returned 1 exit status E:\Projets\****\Makefile.win [Build Error] [projet.exe] Error 1
Cordialement.
|
|
mercredi 18 février 2009 à 18:33:33 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

BruNews
|
essaie avec: #define _WIN32_WINNT 0x0600 #include <windows.h>
DANS CET ORDRE
ciao... BruNews, MVP VC++
|
|
mercredi 18 février 2009 à 18:36:09 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

rt15
|
Réponse acceptée !
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...
|
|
mercredi 18 février 2009 à 18:46:46 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?
|
mercredi 18 février 2009 à 22:34:54 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

wizard512
|
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 ^^"
|
|
vendredi 20 février 2009 à 00:05:18 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?
|
vendredi 20 février 2009 à 00:32:23 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

BruNews
|
Utilise VC++ 2008, c'est gratuit en version Express.
ciao... BruNews, MVP VC++
|
|
vendredi 20 février 2009 à 00:48:43 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

wizard512
|
D'accord mais en quoi le changement de compilateur pourra m'aider pour ce souci de librairie? 
|
|
vendredi 20 février 2009 à 01:13:47 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

wizard512
|
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?! 
|
|
samedi 21 février 2009 à 09:23:26 |
Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

rt15
|
Réponse acceptée !
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 -l ar 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.
|
|
Cette discussion est classée dans : process, include, processus, psapi, processes
Répondre à ce message
Sujets en rapport avec ce message
Create process (suite2) [ par casper_2 ]
Rebonjour,jaimeeai savoir koment avec create process,faire un script!!Moi g fè un script de base ,cest a dire avec un .bat:powerarc -es Kia_stats_prov
processus [ par sebseb42 ]
Bonjour,voila, j'utilise l'API Process Status (PSAPI) pour lister tout les process existant ainsi que leur modules...La seul information que j'arrive
Recupérér Handle de d'un processus [ par kiki67100 ]
Bonjour je voudrais recuperer le handle d'un processus active ex :explorer.exejai deja un code similaire mais il trouve que le PID a partir du process
temps d'exécution trop long [ par diable007 ]
bonjour, j'ai une application parallèle en c++ et MPI, j'ai une partie qui ne nécessite pas de communication avec mpi entre les processeurs. En séqu
psapi.h & psapi.lib [ par guitoulefoux ]
Bienlebonjour,Je tente de faire marcher sous DevC++ la source suivante:http://www.cppfrance.com/forum.aspx?Article=15157 Pour ca il me faut les fichie
trouver le bon process ID!!! [ par anthraxx ]
Je voudrais terminer un processus (avec TerminateProcess) dont je ne connais que le nom du fichier executable (mdm.exe par exemple), et le processus n
Recherche d'adresse mémoire d'un DLL dans un processus [ par empathe ]
Bonjour, je recherche une fonction pouvant me retourner l'adresse mémoire Hexa d'ou est stocké une DLL d'un processus. le code: [code=cpp] #include
DeviceIoControl [ par raphui ]
Salut a tous ! Je développe un " driver " , permettant de cacher un processus dans le Task Manager. Mon problème est que je n'arrive pas a envoyer u
Communiquer entre processus avec des pipe [ par akrogames ]
Bonjour, Je souhaite réaliser un programme pour m'entrainer à créer des anneaux avant de passer à la programmation socket. Mon objectif : faire pass
Programmation script shell ksh unix [ par redrickfr35 ]
Bonjour à tous, Je développe une fonction pour un script shell sous ksh qui doit me renvoyer le nombre d'instances du programme principal en cours d
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|