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

MFC Discussion :

DLL et SendMessage


Sujet :

MFC

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut DLL et SendMessage
    Bonjour a tous,
    voila dans le cadre d'un développement d'un programme, je voudrais lui rajouter une DLL, pour avoir un hook globale, pour que lorsque j'appuie sur une touche le programme en question effectuer une action...
    seulement je n'arrive pas à transmettre le message au programme en question, voici la code de la DLL:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    // header
    #include <windows.h>
     
    // enleve avertissement de compilation
    #pragma warning(disable: 4311) // convertion HHOOK -> int
     
    // var
    HINSTANCE thismod; // hisntance de la dll
    HHOOK hhk; // hook
    HWND prog; // HWND de la ou on veu envoyer le message
    int mess; // param, "la ou on doit envoyer le message"
     
    // fonction principale DLL
    BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
    {
    	if(dwReason == DLL_PROCESS_ATTACH) thismod = hDll;
    		return 1;
    }
     
    // hook
    LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam)
    {
    	// reception d'un message
    	if(nCode >= 0)
    		if(wParam == VK_F10)// appuie sur F10
    			SendMessage(prog, WM_COMMAND, NULL, mess);
     
    	return CallNextHookEx(hhk, nCode, wParam, lParam);
    }
     
    // mise en place hook
    extern "C" __declspec(dllexport) int __stdcall Intercepte(HWND hWnd, int Case)
    {
    	prog = hWnd;
    	mess = Case;
     
    	if(!hhk) // si pas deja mi
    		hhk  = SetWindowsHookEx(WH_KEYBOARD, kbdWinAmp, thismod, 0);
     
    	return (int) hhk;
    }
     
    // desactivation hook
    extern "C" __declspec(dllexport) void __stdcall Relache()
    {
    	if(hhk) // si mi
    	{
    		UnhookWindowsHookEx(hhk); 
    		hhk = 0;
    	}
    }
    voila en esperant que vous pourrez m'aider !
    Merci par avance
    Bob

  2. #2
    Expert confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Ton problème est détaillé ici:
    http://www.flounder.com/hooks.htm
    Mais je ne suis pas sûr que le hook soit la meilleure solution à ce que tu veux faire. Regarde du côté des hot keys, c'est fait pour ça.
    http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    je ne connaissais pas du tout ce système de hotkey... je vais donc y jeter un coup d'oeil !
    merci a toi, pour tes indications !

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    tu pourrais me donner un exemple stp, parce que j'ai un peu de mal à comprendre comment fonctionne les hot key !
    en fait je suis pas sur d'avoir compris, quand je fais le RegisterHotKey(), je définie un ID que je dois mettre en réception de message dans WM_COMMAND, comme un autre élément du programme !

  5. #5
    Expert confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Lit la doc:
    http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp
    Tu reçois WM_HOTKEY, pas WM_COMMAND. Pour l'id c'est expliqué aussi.

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    je te remercie pour ton aide, je viens d'implémenter une HotKey dans mon application et ça marchi nickel, par contre j'ai pas très bien compris comment ça marchais si on enregistrer plusieurs HotKey, il y a les ID qui les identifie, mais j'ai pas compris comment on diférencier le ID dans le message WM_HOTKEY. Mais ça c'est plus de la curiosité personnel, mais ca serait sympa si tu pouvais m'expliquer.

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/03/2009, 15h12
  2. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07
  3. Débug de DLL
    Par Bayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 15h08
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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