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 :

[DLL] Savoir quel programme m'a chargé


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut [DLL] Savoir quel programme m'a chargé
    Bonjour,

    Voila, je créé une DLL et j'aimerai savoir quel programme la charge.
    Concretement, on va dire que j'ai une fonction Calcul(); dans ma DLL et que dans cette fonction j'ai une MessageBox qui affiche "Le processus: Explorer.exe à appeler Calcul."

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Je pense que, quelle que soit l'api, cela revient à savoir le nom de l'exécutable en cours, donc ce n'est probablement pas nécessaire de se préoccuper de l'aspect "dll".
    Pour l'api windows, on saura surement te renseigner sur le forum visual C++. Pour du portable, tu pourrais aller jeter un coup d'oeil du coté de boost::filesystem (ça doit être dans son domaine de compétence).

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Si c'est une DLL windows, implémente une fonction DllMain.... elle sera appelée à chaque fois que la DLL sera "bindée" à un process (programme) ou même à un thread.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    GetModuleFileName(NULL) donne systématiquement le chemin complet de l'EXE.

    Mais ça permet d'identifier seulement l'EXE, pas la DLL précise qui te charge (dans le cas d'un chargement indirect)...
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut
    Merci pour vos réponse. Donc j'ai penser à mettre le code dans DLLMain, mais quel fonction permet de savoir qui est le "parent" de ma DLL, qui la chargée?

    Je vais essayer le GetModuleFileName(NULL) ça peut-etre interessant.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    GetModuleFileName(NULL) donne systématiquement le chemin complet de l'EXE.

    Mais ça permet d'identifier seulement l'EXE, pas la DLL précise qui te charge (dans le cas d'un chargement indirect)...

    Merci beaucoup GetModuleFileName fait bien exactement ce que je veux...
    J'ai essayé avec 2 EXE différents qui appel ma DLL et celle ci me retourne bien le nom de l'EXE qui la charge. Bon après comme tu le dis, lorsqu'il va sagir d'un chargement indirecte ça va être plus difficile.

    Pour l'instant ça me va... je verrais lors du développement complet si j'ai des problème.

    Merci beaucoup!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut
    Bon finalement le nom du programme ne suffit pas, car lorsque ma DLL est appelé par le même programme, j'ai 2 fois le meme nom mais les process sont différents.

    Alors est-ce qu'il est possible de récupérer le pid du programme qui à chargé ma DLL?

    Merci

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/08/2010, 19h55
  2. [XP] comment savoir quel prog utilise quelle dll?!
    Par noone1 dans le forum Windows XP
    Réponses: 17
    Dernier message: 13/11/2006, 12h03
  3. Comment savoir quel programme utilise toute la RAM ?
    Par Invité dans le forum Administration système
    Réponses: 4
    Dernier message: 26/05/2006, 18h22
  4. Comment faire pour savoir quel processus utilise un DLL
    Par Furius dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 02/11/2005, 18h03
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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