Accueil > Forum > > > > hook clavier
hook clavier
jeudi 19 mars 2009 à 14:48:31 |
hook clavier

jocou
|
Bonjour à tous
Petite question aux spécialistes :
Lorsqu'on positionne un hook clavier local (donc sur un thread particulier), est-ce que :
- l'appli destinatrice reçoit la touche frappée PENDANT que la procédure du hook fait son traitement
ou bien
- la procédure du hook exécute son traitement PUIS l'appli destinatrice reçoit la touche frappée
En fait, je voudrais faire la chose suivante :
1) récupérer les touches frappées pour une appli particulière A
2) si la touche est F5, exécuter un traitement AVANT que l'appli A ne reçoive la touche 3) à la fin de mon traitement, laisser l'appli A recevoir la touche F5 et s'exécuter normalement
Est-ce que le HOOK répond à ce mode de fonctionnement, ou bien y-a-t'il d'autres méthodes ?
Merci
jocou
|
|
jeudi 19 mars 2009 à 14:55:40 |
Re : hook clavier

Renfield
|
c'est bien cela...
tu te glisse en fait dans une chaine de hook.
tu recois un message, tu le traite, le transmet au maillon suivant.
en bout de chaine ? ton appli 'A'
|
|
jeudi 19 mars 2009 à 15:36:24 |
Re : hook clavier

jocou
|
Salut Renfield Je viens de tester et ça ne se passe pas comme je le voudrais : Voici la procédure appelée par le hook : Private Function fctCaptureF5( ByVal ncode As Integer , ByVal wparam As Integer , ByVal lparam As IntPtr) As Integer if ncode = 0 Then If GetKeyState(VK_F5) < 0 Then MessageBox.Show("Capture écran 3270") End If End If Return CallNextHookEx(hHook, ncode, wparam, lparam) End Function Or, l'appli A traite le F5 AVANT que le msgbox monte à l'écran.
Peux-tu m'éclairer un petit peu ??
Merci jocou
|
|
jeudi 19 mars 2009 à 15:44:45 |
Re : hook clavier

Renfield
|
utilises tu bien un WH_KEYBOARD_LL ?
(et puis j'aime pas ton test: If GetKeyState(VK_F5) < 0 Then)
|
|
jeudi 19 mars 2009 à 15:51:27 |
Re : hook clavier

jocou
|
Voilà exactement ce que je fais :
Private Const WH_KEYBOARD_LL As Integer = 13 kbHookProc = New HookProc( AddressOf fctCaptureF5) 'hHook = SetWindowsHookEx(WH_KEYBOARD_LL, kbHookProc, IntPtr.Zero, 0) hHook = SetWindowsHookEx(WH_KEYBOARD_LL, kbHookProc, hInstance, 0) Et toi, qu'est-ce que tu fearis à la place de : If GetKeyState(VK_F5) < 0 Then ? jocou
|
|
jeudi 19 mars 2009 à 16:25:39 |
Re : hook clavier

Renfield
|
lis la doc:
http://msdn.microsoft.com/en-us/library/ms644985(VS.85).aspx
ton lParam te les infos sur la touche concernée par le hook :
http://msdn.microsoft.com/en-us/library/ms644967(VS.85).aspx
donc faire:
Private Function fctCaptureF5( ByVal ncode As Integer , ByVal wparam As Integer , ByRef lparam As KBDLLHOOKSTRUCT) As Integer
je pense que le coté synchro de la GetKeyState fais que son etat est à false quand le message te parviens la première fois.
'A' le recoit, l'interprete.
lorsque tu relache la touche, Windows te renvoie un message pour t'en avertir.
a ce moment là, le GetKeyState t'indique que la touche est pressée: tu es en retard sur 'A'
|
|
jeudi 19 mars 2009 à 18:14:30 |
Re : hook clavier

jocou
|
Private Function fctCaptureF5( ByVal ncode As Integer , ByVal wparam As Integer , ByRef lparam As KBDLLHOOKSTRUCT) As Integer If (lparam.flags And KBDLLHOOKSTRUCTFlags.LLKHF_UP) = 0 And lparam.vkCode = 116 Then MsgBox(lparam.vkCode & "*" & lparam.scanCode) End If Return CallNextHookEx(hHook, ncode, wparam, lparam) End Function pas glop, c'est toujours pareil As-tu une autre idée ?
jocou
|
|
jeudi 19 mars 2009 à 21:19:56 |
Re : hook clavier

Renfield
|
et nCode ? tu le testes pas ?
utilises VK_F5, pas 116 (plus lisible)
ton test est pas bon...
(lparam.flags And KBDLLHOOKSTRUCTFlags.LLKHF_UP) = KBDLLHOOKSTRUCTFlags.LLKHF_UP
si le flag est actif
|
|
jeudi 19 mars 2009 à 21:38:35 |
Re : hook clavier

jocou
|
1) Effectivement, il faut tester le nCode = 0 2) Mea-culpa pour 116, VK_F5 est bien plus lisible 3) Je veux exécuter ma procédure lorsqu'on appuie sur la touche F5 et la doc que tu m'as indiquée précise:
bit 7 : Specifies the transition state. The value is 0 if the key is pressed and 1 if it is being released.
4) Mais tout cela ne change rien : l'appli A traite toujours la touche F5 avant le msgbox s'affiche.
Que faire ???
jocou
|
|
Cette discussion est classée dans : appli, traitement, clavier, touche, hook
Répondre à ce message
Sujets en rapport avec ce message
trayicon, capture touche clavier [ par rdechap ]
Bonjour,j'ai réalisé une appli qui ce met en trayicon et je souhaiterai capturer les touches du clavier quand l'appli est réduite...auriez-vous une so
Hook Clavier [ par olixelle ]
Bonjour,j'ai implémenté dans mon application un hook clavier afin qu'elle puisse etre piloté via le clavier.Tout marche bien.Cependant, si l'applicati
Utilisation du clavier dans un programme [ par lapinjaune ]
Bonjour,Je suis débutant en programmation et pour mes TP de bac j'ai réalisé un programme qui gère le port LPT du PC afin de contrôler un robot. Tout
Probème avec "GetAsyncKeyState" et "GetKeyState" (VBA Word Office 2003) [ par Polack77 ]
Voila, je veut faire une procèdure qui me permete de recup les touche taper au clavier simultanémant.Soit avoir comme retour de fonction : -> " + "
Déclanchement d'une combinaison de touche du clavier [ par neewby ]
Bonjour a tous, j'essaye de trouver une fonction permettant de déclencher une combinaison de touche du clavier, comme si c'était l'utilisateur qui le
Détecter touche l'appli étant déselectionnée [ par debutant VB ]
Comment peut-on faire pour détecter des touches même si l'application n'est pas selectionnée ? Merci d'avance.
desactivation d'une touche du clavier [ par dafu ]
coucou tout le monde je voudrais savoir comment on fait pour desactiver une touche juste le temps du programme et la reactiver quand le programme est
MACRO EVENEMENT TOUCHE CLAVIER EXCEL [ par bobo91 ]
bonjour,Je cherche à faire une procedure à partir d'un evenement clavier dans une feuille excel donc dans mon cas avec la touche "supprimer"Je n'arriv
Detecter des touche meme si le programme est minimizer [ par spike911 ]
Bonjours,je veu créer un programme pour optimiser mon ordinateur. Le programme est simple, je veu créer une liste de racourci clavier. J'ai dejas comm
Appuie touche clavier [ par jeje11991 ]
Bonjour,J'aimerais un code, qui permette simplement de faire taper sur une lettre du clavier avec une appli vb ^^Merci de votre précieuse aide :p
Livres en rapport
|
Derniers Blogs
SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|