-
[Vb.net] Hook Clavier
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'application n'est pas en foreground, le hook clavier est qd mm appelé.
Je souhaiterais que mon Hook intercepte les evenements clavier uniquement pour mon appli.
Voici le code que j'utilise:
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" (ByVal idHook As Integer, _
ByVal lpfn As KeyboardHookDelegate, ByVal hmod As Integer, _
ByVal dwThreadId As Integer) As Integer
...
callback = New KeyboardHookDelegate(AddressOf KeyboardCallback)
KeyboardHandle = SetWindowsHookEx(WH_KEYBOARD_LL, callback, Marshal.GetHINSTANCE([Assembly].GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
D'apres ce code, j'ai l'impression de lui demander de ne gérer que les evt clavier pour mon appli( (GetExecutingAssembly))
Mais bon ca ne marche pas :(
Si vous avez une idée...
Merci :)
Rollerman
-
pour qu'un hook soit local à ton appli, tu peux lui spécifier en dernier paramètre le thread associé à la procédure de crochetage, en utilisant GetCurrentThreadId (au lieu de 0 dans ton cas)
sinon, une autre solution est de faire vérifier à ton hook si le nom du processus associé au thread attaché contient bien le nom de ton process (avec GetModuleFileName), et agir uniquement dans ce cas