Accueil > Forum > > > > SetWindowsHookEx - Un classique, la callback n'est pas appelée...
SetWindowsHookEx - Un classique, la callback n'est pas appelée...
lundi 7 décembre 2009 à 17:42:50 |
SetWindowsHookEx - Un classique, la callback n'est pas appelée...

Cemninho
|
Bonjour à tous,
Après avoir éplucher énormément de posts sur ce sujet en vain, je me tourne vers vous.
J'essaye de pouvoir capter les appuis touches sur un appareil mobile (Windows CE 5.0). Mon but est de pouvoir appeler une méthode de DLL GetKeystroke() qui me renverra le code correspondant à la touche appuyée.
Dans un premier temps, je travaille sans DLL, dans un projet 'Console' où je désire uniquement capter des appuis touches. Mon code n'a rien de méchant, il se limite pour le moment à l'appel de la méthode qui met en place le hook, suivi d'un Sleep de 10s.
Voici mon appel de SetWindowsHookEx
SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboardHookCallbackFunction, NULL, 0);
-> Je désire capter les appuis touche de manière globale (pas de fenêtre windows).
avec pour callback :
LRESULT CALLBACK LLKeyboardHookCallbackFunction(
int nCode,
WPARAM wParam,
LPARAM lParam )
{
printf("KeyStroke \n");
};
Constat : je n'entre jamais dans la callback, meme avec un appui touches simulé par le logiciel avec keybd_event. Est-ce que quelqu'un saurait me dire ce que je fais de travers ?
Merci
|
|
mardi 8 décembre 2009 à 14:33:10 |
Re : SetWindowsHookEx - Un classique, la callback n'est pas appelée...

juju12
|
Bonjour;
Extrait du SDK pour ce hook :
This hook is called in the context of the thread that installed it. The
call is made by sending a message to the thread that installed the hook. Therefore, the thread that installed the hook must have a message loop.
Traduction : c'est pas une callback au sens propre du terme, il faut récupérer les messages (GetMessage-TranslateMessage-DispatchMessage...)
|
|
mardi 8 décembre 2009 à 17:17:52 |
Re : SetWindowsHookEx - Un classique, la callback n'est pas appelée...

Cemninho
|
Je ne suis pas certain qu'il faille une pompe a message. GetMessage, DispatchMessage et TranslateMessage servent à traiter des messages propres aux fenêtres type WM_xxx. Or je n'ai aucune fenêtre de créée et donc forcément, pas de handle de fenêtre, nécessaire à l'appel de GetMessage par exemple...
Est-ce que tu pourrais me donner le lien de la page où tu as trouvé cet extrait ?
J'ai encore passé ma journée à me renseigner sur cette anomalie. Avec un code similaire, certaines personnes arrivent à recevoir les appuis touches, je n'y comprend rien.
Ma callback n'est jamais appelée et, ce qui est étrange, c'est qu'une fois une touche appuyée, le curseur de la souris se fige et le texte tapé n'est pas affiché à l'écran. Si derrière je tue mon application, tous les mouvements de souris qui ne se sont pas affichés jusque là s'executent soudainement et le texte tapé apparait à l'écran. C'est comme si les evenements s'accumulaient en mémoire sans jamais être dépilés.
Merci toutefois pour ta participation.
|
|
mardi 8 décembre 2009 à 18:30:49 |
Re : SetWindowsHookEx - Un classique, la callback n'est pas appelée...

Cemninho
|
Je reviens avec beaucoup d'espoir ! Suite à ton post juju12, j'ai creusé dans ce sens là et en effet il est nécessaire d'avoir une pompe à message et par conséquent, une fenêtre !!!
Le fait est qu'il est nécessaire d'avoir un message WM_KEYDOWN pour pouvoir appeler la callback associée à SetWindowsHookEx. Par contre, il n'est pas nécessaire d'afficher la fenêtre (SW_HIDE) pour récupérer les évenements.
Bon bah ya plus qu'à !
Merci encore !
|
|
mercredi 9 décembre 2009 à 13:08:22 |
Re : SetWindowsHookEx - Un classique, la callback n'est pas appelée...

juju12
|
Attention, pas de confusion : les piles de messages sont associées aux threads et pas aux fenêtres, donc tu peux très bien recevoir des messages même sans fenêtre (exemple : dialogue entre threads par messages WM_USER+X etc.)
Quant aux sources, tu peux chercher SetWindowsHookEx sur MSDN, ou télécharger le Platform SDK, indispensable pour développer sous Windows.
|
|
Cette discussion est classée dans : touches, callback, capter, appuis, setwindowshookex
Répondre à ce message
Sujets en rapport avec ce message
Problème de "pression de touches" [ par Quiske ]
Bonjour tout le monde , je suis un programmeur débutant jeune 14 - 15 ans qui a un problème :Je voudrais dire a l'ordinateur que j'appuie sur une tou
Pb pour recuper le callback [ par Lombric ]
Je comprend pas bien comment faire pour recuperer un callback (de mon icon placer en barre des taches)pour faire apparaitre un menu par exemple en VC+
Convertir en visual basic [ par sfouilloux ]
'typedef struct _AC_ADT_GUI_CALLBACK {' PAC_ADT_SET_FINGER_STATUS AC_ADT_SetFingerStatus;' PAC_ADT_SET_MESSAGE AC_ADT_
fonction de callback [ par veve33 ]
Bonjour,j'aimerais savoir comment faire du callback en c pour compiler sous unix mais aussi sous windows surement a terme.Mon but etant de faire une l
Envoyer les touches du clavier. [ par Babou ]
Bonjour,Je cherche un moyen d'envoyer la séquence de touches suivante : .Mais il faut que ce soit sur le port clavier, pas sur l'écran.Etant donné
Envoyer des touches à un programme... [ par Mikonyx ]
Salut, j'aimerais savoir comment on peut envoyer une séquence de touches (DEV c++) à un programme windows lorsque l'on connait le nom de sa fenêtre...
URGENT: Comment bloquer touches en C++ [ par Fimagen ]
Comment bloquer toutes les touches du clavier SAUF les numeriques et la touche "entrée"!!!Merci d'avance...
Code ASCII [ par SuperDoudou ]
SuperDoudouJe n'arrive pas trouver les touches dont les codes ascii sont 224 et 13.De +, est-ce que je me trompe si je pense que les codes ascii des
touches presses en C++...help! [ par zanidip ]
voilla,je cherche a detecter les touche clavier pessées (pour programmer pakman par exemple).j'ai essayé d'utiliser Keypress(x); mais ca marche pas.je
Probleme pour récupérer des touches du clavier en c++ [ par TRASH52 ]
TRASH52J'ai un probleme pour récupérer toutes les touches autres que les caractères! Les caractères peuvent etre recupere avec getch() ok, mais pou
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|