begin process at 2010 02 10 07:17:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Administrateur CodeS-SourceS
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

Membre Club Administrateur CodeS-SourceS
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` ?

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Poste croisé avec BruNews... Cela dit vu le message d'erreur, le compilo semble trouver tranquillement la fonction dans le windows.h.

Voilà la fenêtre. Il faut que tu ajoutes -lPsapi dans la zone de droite, celle qui a déjà des trucs dedans sur la capture.

mercredi 18 février 2009 à 22:34:54 | Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

wizard512

Membre Club
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` ?

wizard512

Membre Club
Toujours aucune idées?    
vendredi 20 février 2009 à 00:32:23 | Re : Processus en cours d'execution? Psapi.lib et Psapi.h? `EnumProcesses@12` & `GetModuleBaseNameA@16` ?

BruNews

Administrateur CodeS-SourceS
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

Membre Club
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

Membre Club
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

Membre Club Administrateur CodeS-SourceS
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 -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.

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales