hook (global) sur le clavier - empêcher le traitement ultérieur - API Win32 - Programmation
Marsh Posté le 20-02-2010 à 22:53:47
Rajoute la ligne suivante juste après la ligne 75 :
Code :
|
Marsh Posté le 21-02-2010 à 21:49:37
Merci de ton aide.
Malheureusement, cela ne fonctionne pas. :-(
Même le remplacement du "Return CallNextHookEx(hookID, nCode, wParam, lParam)" général par "Return 0" n'empêche pas l'interception de F12 par Word.
Après recherche plus avancée, j'ai découvert que les hooks spécifiques des threads passent avant les hooks globaux :
"For a specified hook type, thread hooks are called first, then global hooks."
(http://msdn.microsoft.com/en-us/li [...] 85%29.aspx)
Sauriez-vous comment passer devant ces hooks spécifiques aux threads ?
Merci d'avance,
Nicolas
Marsh Posté le 22-02-2010 à 10:27:12
Au lieu de faire un hook clavier, tu peux tenter de faire un hook de lancement de programme qui va injecter un thread qui va mettre en place un hook clavier au sein même de l'application. (bonjour les efforts à faire...)
Cela dit je trouve pas terrible ta façon de faire les choses car tu prives l'utilisateur d'un raccourci clavier (dans ton exemple celui de "enregistrer sous" )!
Tu devrais plutôt essayer de chercher un autre raccourci clavier moins utiliser genre "CTRL + ²"
Marsh Posté le 20-02-2010 à 17:39:57
Bonjour,
J'apprécierais de l'aide sur le problème suivant.
Mon but final est que l'appui sur la touche F12 entraîne l'impression de la date (par SendKeys) dans l'application qui a le focus (que ce soit Outlook, Word, Excel, etc...). J'ai donc mis en place en VB.NET un "global keyboard hook" à l'échelle du système, qui fonctionne bien (code ci-dessous).
Mon seul souci est que je souhaiterais neutraliser toute interception ultérieure par le système du même F12. Par exemple, l'appui sur F12 sous Word imprime bien la date, mais lance en même temps la boîte de dialogue ("Enregistrer sous..." ), car F12 est la raccourci clavier naturel pour cette boîte de dialogue sous Word (hook local). La date s'imprime en fait au sein d'un champ de cette boîte de dialogue.
En d'autres termes, je souhaiterais améliorer le hook pour que l'appui sur F12 fasse ce que je souhaite (c'est déjà le cas), mais rien d'autre. C'est-à-dire faire en sorte que, hormis mon traitement, le système "oublie" que F12 a été pressé.
Je débute en VB.net : je compte sur votre indulgence.
Merci d'avance pour votre aide,
Cordialement,
Nicolas