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 :

chercher le nom dll


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut chercher le nom dll
    Bonjour,
    Depuis une méthode qui se trouve dans un dll, comment je peux retroouver le nom du dll. Avec getmodulefilename(), je peux retrouver le nom du exe mais pas dll
    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu veux dire, le retrouver depuis la méthode elle-même, ou retrouver le nom depuis l'extérieur de la méthode pour appeler la DLL ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut
    yeap, depuis la méthode
    Je prends un exemple:
    TOTO.dll contient les méthodes
    TOTO1
    Depuis TOTO1: comment je retrouve TOTO.DLL pour le fichier log afin d'identifier le DLL qui produit cette erreur
    Merci beaucoup

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Typiquement, le moyen sûr de faire ça passe par DllMain() et une variable globale:
    1. Tu crées une variable globale de type HMODULE
    2. Dans le case DLL_PROCESS_ATTACH de ton DllMain(), tu recopie le HMODULE en paramètre vers ta variable globale.
    3. Quand tu as besoin du nom de la DLL, tu fais un GetModuleFileName() sur ce HMODULE global.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Typiquement, le moyen sûr de faire ça passe par DllMain() et une variable globale:
    1. Tu crées une variable globale de type HMODULE
    2. Dans le case DLL_PROCESS_ATTACH de ton DllMain(), tu recopie le HMODULE en paramètre vers ta variable globale.
    3. Quand tu as besoin du nom de la DLL, tu fais un GetModuleFileName() sur ce HMODULE global.
    Merci pour la réponse.
    Mais j'utilise MFC, donc DLLMain est appelé directement.
    Est-ce que je dois charger dllmodul.cpp dans mon répertoire et ajouter la copie de HMODULE dnas ma variable globale? Est-ce pas trop risqué?
    Merci beaucoup

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu utilises MFC sans faire de DllMain(), c'est donc une DLL utilisant MFC (MFC Regular DLL) et non une DLL d'extension MFC (MFC Extension DLL) ?

    Dans ce cas, si tu utilises la fonction AfxGetModuleHandle(), tu devrais récupérer le HMODULE de ta DLL.

    Et si ça ne marche pas, tu devrais, dans tous les cas, pouvoir obtenir le HMODULE de la DLL ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void UneFonction(void)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
    	HMODULE hModule = AfxGetResourceHandle();
     
    	//Et là, tu peux utiliser GetModuleFileName()
    	//...
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. [Batch] Chercher les noms de répertoires contenant un certain fichier
    Par julkillu dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 04/04/2012, 10h00
  2. chercher le nom d'une fonction
    Par NELLLY dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/04/2009, 21h26
  3. Fonctions de même nom (dll)
    Par darkskill dans le forum Windows
    Réponses: 3
    Dernier message: 13/04/2008, 09h10
  4. Réponses: 1
    Dernier message: 24/01/2008, 17h30
  5. [Excel] Chercher un nom de cellule dans des formules
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2006, 17h43

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