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 :

Hook : communication entre la DLL et l'exécutable appelant


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Par défaut Hook : communication entre la DLL et l'exécutable appelant
    Bonjour !

    Je viens de réaliser un petit exemple simple de hook me signalant par une messageBox lorsque le curseur de ma souris prend la forme du curseur de saisie (I-beam), comme quand on est au-dessus d'un champ de saisie de texte (en pièce jointe).

    Mon programme principal s'exécutant dans la console, comment puis-je faire pour que ma DLL m'écrive un message sur ma sortie standard (ma console ouverte, donc) quand le curseur prend la forme I-Beam, plutôt que par la messageBox ? (évidemment, si je place bêtement un printf à la place du MessageBox, ça marche pas ... )

    Et si au passage, il y a une façon plus élégante pour détecter l'I-beam, ça m'intéresse

    Merci par avance pour votre aide !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Citation Envoyé par thenaoh Voir le message
    Mon programme principal s'exécutant dans la console, comment puis-je faire pour que ma DLL m'écrive un message sur ma sortie standard (ma console ouverte, donc) ...
    Avec un bon vieux CALLBACK, comme toutes les DLL windows

  3. #3
    Membre confirmé
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Par défaut
    Merci, mais alors du coup, dans mon code, comment dois-je faire alors ? Pourrais-tu me donner un exemple ?

    Merci pour ton aide

  4. #4
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Ton programme principale passe l'adresse de la fonction CALLBACK à la DLL par l'appel à une fonction Init (par exemple), ensuite ta DLL peut appeler cette fonction lorsque c'est utile.

    Il y a un exemple sur les pointeurs de fonctions ici: http://cpp.developpez.com/cours/cpp/...page_6#LVI-L-1

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Un callback ne marchera pas dans le cas d'un hook puisque la DLL sera injectée dans d'autres processus
    Utilise un message WM_COPYDATA si du texte est nécessaire ou un message perso créé par RegisterWindowMessage. (Il faudra bien sûr créer une fenêtre pour recevoir ce message)

  6. #6
    Membre confirmé
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Par défaut
    Merci 10_GOTO_10 et Andnotor pour vos réponses !

    Alors j'ai essayé avec les pointeurs de fonctions, mais ça ne marche pas des masses. C'est bien dommage, l'idée me plaisait beaucoup, pourtant ...

    Concernant WM_COPYDATA, je vais faire une recherche là-dessus, mais un petit exemple de code ne serait pas de refus (et pour info, j'ai besoin que mon appli soit une appli console)

    Merci !!

Discussions similaires

  1. communication entre C# et Dll C++ utilisant l'ATL
    Par Chafouin dans le forum C++/CLI
    Réponses: 7
    Dernier message: 27/05/2008, 15h30
  2. Réponses: 2
    Dernier message: 28/03/2007, 11h32
  3. communication entre un projet DLL et une application
    Par ferry.jules dans le forum C++Builder
    Réponses: 95
    Dernier message: 22/05/2006, 20h06
  4. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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