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
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE
Forum
RE : PB COMBOBOX RE : PB COMBOBOX par VbNicoG
Cliquez pour lire la suite par VbNicoG
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|