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

Windows Discussion :

Handle -> fichier *.exe associé ?


Sujet :

Windows

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut Handle -> fichier *.exe associé ?
    Salut à tous,

    je dispose en mémoire du Handle d'une fenêtre de l'application (soit la fiche principale soit une fiche enfant) et je voudrais obtenir le chemin d'accès au fichier *.exe de cette application.

    Comment faire ?

    Merci d'avance pour votre aide.
    Neilos

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 409
    Points
    59 409
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Quand je vois ton nom, j'attache ma ceinture : tes questions sont en général... comment dire... particulièrement ardues (et je dis cela avec une pointe d'admiration).

    Pour ce qui est des fenêtres de l'application courante elle-même, il est possible de récupérer le handle de l'application via GetCurrentTask et de remonter jusqu'au nom de l'exécutable via GetModuleFileName.

    Mais pour des fenêtres appartenant à une autre appli, je donne ma langue au chat.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Salut,

    merci pour le compliment ! lol J'ai bien aimé le

    Quand je vois ton nom, j'attache ma ceinture
    Bon je suis allé voir sur le site MSDN pour avoir des informations à propos de la fonction GetModuleFileName.
    Effectivement avec cette fonction on peut récupérer les chemin d'accès aux différents modules utilisés par notre propre application.
    La page de MSDN à propos de GetModuleFileName stipule que pour accèder aux autres processus il faut utiliser GetModuleFileNameEx..
    Un petit clic pour se retrouver sur la bonne page.

    Bon j'ai essayé de mettre en application mais je suis acutellement confronté à "l'humour" des développeurs de chez Bilou : la fonction me renvoie "?" avec mes paramètres.

    Je dispose du Handle de la fenêtre principale de l'application et d'une de ses fenêtres enfant. Etant donné qu'il me faut aussi le Handle d'un module là je rame un peu.

    Je me suis dit bon on va essayer de prendre le premier de la liste des modules de ce processus....toujours "?".

    Voilà mon tout petit bout de code....si quelqu'un voit ce qui ne vas pas ou a un petit sugestion à me faire ce serait très gentil pour moi.....et pour Alcatîz, sinon il va s'étoufer à force de serrez sa ceinture lol

    Merci encore pour les infos Alcatîz

    Voilà le code : (EDIT 1: voila ce qui se passe quand on va trop vite...j'ai oublié de tester si la fonction ne "plantait" pas....ben en fait si...d'où le "?"....j'ai modifié le code voilà ce que ca donne mais ca ne marche toujours pas... ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       buffer = new char[1000];
       HMODULE modules[1024];
       EnumProcessModules( mWnd, modules, sizeof(modules), &needed );
       if( GetModuleFileNameEx( mWnd, mWnd, buffer, buffer_size ) != 0 )
          MessageDlg&#40; buffer, mtInformation, TMsgDlgButtons&#40;&#41; << mbOK, 0&#41;;
       delete buffer;
    Neilos

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 409
    Points
    59 409
    Billets dans le blog
    2
    Par défaut
    Ne devrais-tu pas plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if&#40; GetModuleFileNameEx&#40; mWnd, modules&#91;0&#93;, buffer, buffer_size &#41; != 0 &#41;
    pour accéder au premier module de la liste ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Salut,

    oui effectivement . J'ai cependant abandonné cette méthode et connaissaint le nom de l'executable (mais pas son chemin d'accès) je me contente de lister tous les processus, de trouver celui qui m'interesse et d'en ressortir le chemin d'accès .

    Merci quand même pour ton aide !
    Neilos

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        DWORD pid;
        GetWindowThreadProcessId&#40; hWnd, &pid &#41;;
        HANDLE hProcess = OpenProcess&#40; PROCESS_ALL_ACCESS, FALSE, pid &#41;;
        TCHAR name&#91; MAX_PATH &#93; = TEXT&#40; " " &#41;;
        GetModuleFileNameEx&#40; hProcess, NULL, name, MAX_PATH &#41;;
    devrait fonctionner

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Merci !
    Neilos

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

Discussions similaires

  1. interdire un fichier exe de fonctionner sans connection web?
    Par christiane dans le forum Web & réseau
    Réponses: 1
    Dernier message: 27/06/2005, 19h35
  2. fichiers et associations
    Par voyageur dans le forum C++
    Réponses: 16
    Dernier message: 02/05/2005, 23h49
  3. Fichier exe avec Dev-C++
    Par hartecel dans le forum Dev-C++
    Réponses: 4
    Dernier message: 18/03/2005, 15h51
  4. [VB6] récuperation des propriétés d'un fichier exe
    Par ulrick dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/03/2004, 00h08

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