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 :

Recuperer le nom de l'appli qui a le focus


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut Recuperer le nom de l'appli qui a le focus
    Bonjour, a tous ça fait longtemps que j'avais pas eu a venir sur DVP

    Voila pour notre projet, j'ai a récupérer l'application qui a le focus en C++ (Je suis sur C++ depuis 3 semaines). Il se trouve que l'on arrive a récupérer le handle via GetForegroundWindow(); mais on souhaiterait pouvoir récupérer le nom de l'application plutot. Pour avoir quelque chose du genre :

    Appli : Firefox
    Plutot que un truc dans ce genre la :

    Appli : 0x119077c2
    Je voulais savoir si c'était possible et vers quoi m'orienter.

    Merci

    PS: J'ai fait une recherche dans le forum et aucun résultat

  2. #2
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    à partir du Handle d'une fenetre de l'application il est possible d'avoir le chemin complet de l'executable qui l'a générée :

    tiré d'un post sur le forum BCB (y'a une notation String qui n'est pas c++ standard,donc à remplacer par string standard ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /* ---------------------------------------------------------------------------
       FONCTION QUI RETOURNE LE CHEMIN DE L'EXCUTABLE ASSOCIE AU CONTROL
       ---------------------------------------------------------------------------
    */
    String __fastcall GetExePath(HWND AWindow){
     
               DWORD ProcessID;
               GetWindowThreadProcessId(AWindow,&ProcessID);
               char file_path[MAX_PATH];
                HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, ProcessID);
               if(hProcess!=0){
                  GetModuleFileNameEx(hProcess,0,file_path,MAX_PATH);
                  CloseHandle(hProcess);
                  String ExeName(file_path);  
                  return ExeName;
               }else{
                  CloseHandle(hProcess);
                  return "";
               }
    }
    mais ça donne pas forcement le "nom "de l'appli..
    on peut aussi récuperer le titre de la fenetre..mais c'est pareil rien ne dit que c'est le nom de l'appli (ex firefox)...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Nous avions effectivement vu qu'on pouvait récupérer le nom de la fenetre (pas forcément explicite) et on avait cherché aussi pour le nom de chemin mais nous avions un beau plantage lors de l'éxecution.

    Je vais essayer ça

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Bon après une heure de bataille avec mon code j'abandonne et viens vous voir !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetModuleFileNameEx(hProcess,0,file_path,MAX_PATH);
    J'arrive pas a compiler "a cause" de cette ligne la. Il y a t'il un import a faire ? car il ne la connait pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetModuleFileName(NULL,nom,taille);
    En sachant que celle la marche ...

  5. #5
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    #include "psapi.h"

    et il faut ajouter psapi.lib ...

    pour la procédure ça dépend de votre environnement de programmation...

    voir sur msdn :

    http://msdn.microsoft.com/library/de...filenameex.asp

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    J'avais effectivement regarder la msdn et fait mon include sur psapi.h mais j'avais pas rajouter le .lib (un jour je toucherais en C++ )

    Merci a toi en tout cas Djob

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    J'ai oublié un truc Merci ça marche

    J'ai bidouillé un petit peu j'ai gardé que l'exe

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

Discussions similaires

  1. recuperer le nom du bouton qui declenche l'event
    Par skunkies dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/01/2009, 19h51
  2. Hook pour récupérer le nom d'appli qui a le focus
    Par extenbrisadlucem dans le forum Gnome
    Réponses: 4
    Dernier message: 18/07/2008, 16h57
  3. Réponses: 4
    Dernier message: 03/02/2006, 18h02
  4. Réponses: 4
    Dernier message: 03/01/2006, 13h44
  5. Recuperer le nom d'un fichier
    Par elvivo dans le forum C
    Réponses: 5
    Dernier message: 27/12/2002, 15h44

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