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

API, COM et SDKs Delphi Discussion :

Messages windows et DLL


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Par défaut Messages windows et DLL
    Salut,

    Je suis à la recherche d'informations sur le fonctionnement des messages windows dans une dll. J'aimerai savoir si c'est l'application(donc la fiche principale) qui récupère les messages et les diffuse à la Dll? Où est ce que la dll est considérée comme une application et je dois creer une fenetre cachée pour intercepter les messages?

    Si c'est l'application qui gère les messages, comment ca fonctionne quand par exemple une application java discute avec ma dll delphi? dans cette configuration, je ne récupère pas les messages...

    Je trouve peu d'information à ce sujet sur le net!

    Merci.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    J'aimerai savoir si c'est l'application(donc la fiche principale) qui récupère les messages
    le "donc la fiche principale" est faux, c'est la boucle Run qui récupère les Messages, les filtre selon leur type sinon cela invoque DispatchMessage (c'est la qu'intervient les WndProc surchargés par SetWindowLong\GWL_WNDPROC, disons que la WndProc est un peu une fonction CallBack que le système appele lors qu'un message est envoyé à une Fenêtre , tu noteras dans l'aide de l'API Windows fourni avec Delphi que WM_TIMER est un peu particulier, puisque c'est en rapport avec tes sujets précédents, Messages to delphi dll et TTimer et Dll

    Edam avait déjà expliqué que le TTimer crée sa propre Speudo Fenêtre qui contenait sa Propre WindowProc, et bien sur, cet WndProc intercepte que les WM_TIMER et d'ailleurs, le Timer a été créé par SetTimer sur la Handle de cette Speudo Fenêtre et ne passe donc jamais par la MainForm, par contre, il passe par l'application voir tout ce qui concerne HInstance ... là s'arrête mes vagues connaissances ...
    Ah, autre chose à étudier, les HOOKS !
    On appèle SetWindowsHookEx pour détourner les Messages d'une Application depuis une DLL

    Donc si cela fonctionne dans une DLL, c'est parce que le TTimer est un composant complet et autonome

    Normalement, aucun autre message ne peut être envoyé à une DLL, sauf avec un Thread qui fait ses PeekMessage et un PostThreadMessage mais là c'est un autre mécanisme de transmission de message...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Par défaut
    Je comprend le principe mais dans le cas d'une appli java qui appelle ma dll, le timer (puisque c'est effectivement le sujet) démarre bien mais ontimer n'est jamais appelé ...
    Dans le cas d'une application delphi qui appelle ma dll, tout se passe a merveille!

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Probablement parce que HInstance n'est pas défini ou que DispatchMessage n'est pas invoqué ... En plus en réalité, ce n'est pas ton application Java qui lance ta DLL mais la Machine Virtuelle Java ...

    Pour cette problématique, je t'avais dit remplacer cela par un Thread lancé depuis DllEntryPoint ATTACH (attention, il faut le lancer manuellement au 1er Chargement)

    EDIT : au fait, tu n'avais pas répondu à une question, ton Plug-In c'est une DLL simple avec des Exports ou un Objet Automation \ Active X
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Par défaut
    C'est une Dll simple avec export!

Discussions similaires

  1. Intercepter un Message Windows ? Créer un Composant Grille !
    Par TOTO32 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 21/07/2004, 13h41
  2. Réponses: 2
    Dernier message: 06/04/2004, 08h39
  3. Interception Messages Windows
    Par tiramisu dans le forum MFC
    Réponses: 5
    Dernier message: 24/02/2004, 14h01
  4. Réponses: 13
    Dernier message: 14/01/2004, 16h35
  5. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25

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