IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Connaitre si un .exe est lancé


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 22
    Points
    22
    Par défaut Connaitre si un .exe est lancé
    Bonjour a tous, je suis face à un problème que je n'arrive pas à résoudre. Voilà le problème, je voudrais savoir sur un exécutable est lancé sur mon pc ( exemple : qtcreator.exe ) donc je me suis inspirer d'un petit tuto trouver sur msdn (ici ).
    Donc pour moi ca donne ca :

    Code:

    bool MainWindow::isRunning(char *qtcreator)
    {
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;

    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
    {
    return false;
    }

    // Calculate how many process identifiers were returned.
    cProcesses = cbNeeded / sizeof(DWORD);

    // Print the name and process identifier for each process.
    bool trouve = false;
    for ( i = 0; i < cProcesses; i++ )
    {
    if( aProcesses[i] != 0 )
    {
    wchar_t szProcessName[256];

    // obtient le handle du process.
    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
    PROCESS_VM_READ,
    FALSE, aProcesses[i] );

    // Obtient le nom du process

    if (NULL != hProcess )
    {
    HMODULE hMod;
    DWORD cbNeeded;

    if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
    {
    GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
    }
    }
    QString test;
    test.toWCharArray(szProcessName);
    if( test == qtcreator ) {
    trouve = true;
    }

    CloseHandle( hProcess );
    }
    }

    if (trouve) {
    return true;
    } else {
    return false;
    }

    }
    J'ajoute aussi les includes aussi. Puis à la compile j'obtient ceci :

    undefined reference to 'EnumProcesses@12'
    undefined reference to 'EnumProcessesModules@16'
    undefined reference to 'GetModuleBaseNameW@16'
    Collect2: ld returned 1 exit status

    Quelqu'un a une idée ?????

  2. #2
    screetch
    Invité(e)
    Par défaut
    ajouter DbgHelp.lib ou psapi.lib aux bibliothèques?
    dans la doc 'crosoft:
    Kernel32.lib on Windows 7 and Windows Server 2008 R2, Psapi.lib if PSAPI_VERSION=1 on Windows 7 and Windows Server 2008 R2, Psapi.lib on Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 22
    Points
    22
    Par défaut Merci !!!
    C'etait bien ca j'avais oublier de lier la librairie. Sinon tu connaitrais une fonction pour récupérer le nom du processus grace à son PID

  4. #4
    screetch
    Invité(e)
    Par défaut
    erm non ca je sais pas, je crois que ce que tu peux obtenir c'est le fichier du processus avec QueryFullProcessImageName

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Non c'est bon j'ai trouver a la place de "GetModuleBaseName" il faut le remplacer par "GetModuleBaseNameA" comme ca j'ai le nom de l'exe sous la forme exemple.exe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2012, 14h06
  2. Réponses: 0
    Dernier message: 09/02/2011, 16h14
  3. depuis quel répertoire est lancé mon exe
    Par cortex59 dans le forum C++
    Réponses: 13
    Dernier message: 13/02/2009, 09h33
  4. vérifier si explorer.exe est lancé.
    Par gregure dans le forum Windows
    Réponses: 3
    Dernier message: 31/07/2007, 18h41
  5. Réponses: 1
    Dernier message: 02/08/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo