Accueil > Forum > > > > WH_KEYBOARD hook
WH_KEYBOARD hook
jeudi 14 décembre 2006 à 13:12:29 |
WH_KEYBOARD hook

chris_brabant
|
Bonjour J'ai écrit une DLL en C, qui me permet d'ajouter et de retirer un hook de type WH_KEYBOARD. Mon problème est de savoir dans quelle fenêtre est survenu l'évènement. En effet quelle que soit la fenêtre de mon application qui est affichée, la procédure du hook est exécutée quand je tape une touche au clavier, et je ne vois pas comment limiter l'exécution de la procédure, pour qu'elle ne s'exécute que lorsque l'évènement a lieu dans une fenêtre bien précise. En gros je voudrais faire la même chose que dans Visual Basic, avec (par exemple) l'évènement KeyDown sur un contrôle TextBox : le handler est bien exécuté uniquement lorsqu'une touche est enfoncée dans ce textbox ! Merci
|
|
jeudi 14 décembre 2006 à 13:19:09 |
Re : WH_KEYBOARD hook

Joky
|
Dans ce cas là, pas besoin de Hook Effectue juste un sous-classement sur le contrôle que tu as besoin et voilà traite les messages WM_KEYDOWN et WM_KEYUP ULARGE_INTEGERJokyQi=QI("Joky"
|
|
jeudi 14 décembre 2006 à 15:21:15 |
Re : WH_KEYBOARD hook

chris_brabant
|
j'ai cité le fonctionnement d'un contrôle Visual Basic comme EXEMPLE....
ma question concerne bien une fenêtre Windows de base...
|
|
jeudi 14 décembre 2006 à 15:35:25 |
Re : WH_KEYBOARD hook

racpp
|
Réponse acceptée !
Salut, Tu as deux choix: 1- Si tu veux garder ton hook, tu peux utiliser la fonction GetFocus() pour connaitre le HWND de la fenêtre ou le controle ayant le focus. 2- Comme indiqué par Joky, tu peux sous-classer ton EditBox: // Déclarer en global une variable WNDPROC: WNDPROC OldProc; // Implémenter une fonction de sous-classement: HRESULT CALLBACK NewProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { If(message==WM_KEYDOWN) { MessageBox(0, "WM_KEYDOWN intercepté","",0);. return 0; } return CallWindowProc(OldProc, hwnd, message, wParam, lParam); } // Juste après la création de l'Edit ou la récupération de son HWND pendant // WM_CREATE ou WM_INITDIALOG, on change l'adresse de sa fonction: OldProc=(WNDPROC) SetWindowLong(hwndEdit, GWL_WNDPROC, (long)NewProc);
Il est à noter qu'une seule procédure de sous-classement peut servir pour tous les controles EDIT de l'application. Le HWND permet de les différencier.
|
|
jeudi 14 décembre 2006 à 16:09:07 |
Re : WH_KEYBOARD hook

Joky
|
C'est le même principe avec une fenêtre sauf que le sous-classement n'est même pas utile... switch(Msg) { case WM_KEYDOWN: //On a pressé une touche alors que la fenêtre à le focus... return 0; } ... ULARGE_INTEGERJokyQi=QI("Joky"
|
|
jeudi 14 décembre 2006 à 16:56:15 |
Re : WH_KEYBOARD hook

racpp
|
Joky >> Avec une fenêtre, on fait du sous-classement implicite. En effet, c'est la procédure par défaut de la fenêtre qui est sous-classée. La procédure de sous-classement est celle déclarée dans le membre lpfnWndProc de la structure WNDCLASS. Si le message n'est pas traité dans cette procédure, on devra appeler la fonction DefWindowProc() pour le passer à la procédure par défaut. Sinon, notre fenêtre ne s'affichera jamais.
|
|
jeudi 14 décembre 2006 à 17:07:34 |
Re : WH_KEYBOARD hook

Joky
|
Ah... En effet c'est vrai que c'est du sous-classement. Mais il est bien dissimuler :p ULARGE_INTEGERJokyQi=QI("Joky"
|
|
vendredi 15 décembre 2006 à 13:56:08 |
Re : WH_KEYBOARD hook

chris_brabant
|
Merci, la fonction GetFocus() me convient (je l'avais trouvée hier soir !)
|
|
Cette discussion est classée dans : fenêtre, keyboard, hook, évènement, wh
Répondre à ce message
Sujets en rapport avec ce message
Hook WH_KEYBOARD et WM_KEYDOWN/WM_KEYUP [ par Maegis ]
Bonjour,Après moult recherches infructueuses je viens poser la question ici.J'aimerai savoir si dans un hook WH_KEYBOARD on peut faire la distinction
HOOK WH_KEYBOARD_LL [ par maladedede ]
Bonjours, j'ai fais un hook global sans DLL avec WH_KEYBOARD_LL qui est donc different de WH_KEYBOARD.Dans ma fonction de CALLBACK je recupere la stru
Hook sur fenêtre "Enregistrer sous" [ par annplop ]
Bonjour,je souhaite intercepter une fenêtre "enregistrer sous", et remplir les différents champs:"Enregistrer dans""Nom de l'objet""type"Est-ce quelqu
hook souris [ par ndubien ]
Bonjour,Je cherhe à faire un hook sur souris qui envoi à une fenêtre précédement déclarée (HWND hwndPrinc) tous les messages reçus...Je veux que ma fe
Hook Keyboard [ par 0x80h4x0r ]
Salut,Je fait un hook global de clavier et mon programme marche bien quand je teste sur explorer.exe il recupere toutes les touches etc ... Le problem
Problème de hook sur fenêtre enfant... [ par platon179 ]
Bonjour, j'ai un souci concernant les hooks sur les fenêtres enfant. En fait, ca marche très bien sur les fenêtres parent, mais il semble que la procé
Hook sur création de fenêtre du système [ par r144 ]
Bonjour, voila j'ai ecrit un petit prog avec un dll en prenant appui sur le source de BruNews(que je remercie) qui capture la création d'une fenêtre d
Une fenêtre vide = exe de 152 ko... [ par Inekman ]
Salut tout le monde,Ca fait pas mal de temps que je lis des livres sur le C++ et donc je m'y suis mis réellement hier soir car j'ai enfin compris comm
Redimmensionement d'une fenêtre [ par stockley81 ]
Je vais essayer d'exposer mon problème le plus clairement possible. J'ai une application graphique à réaliser pour le boulot mais c'est un peu spéci
Problème de vues... [ par Kkeyser ]
Bonjour,Voilà mon problème : la fenêtre principale de mon application est divisée en 2 vues : une CTreeView et une CView.J'ai donc naturellement utili
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : WIN APIRE : WIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|