|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
HOOK CLAVIER + SOURIS ( PERMET UN BLOQUAGE DU CLAVIER ET/OU DE LA SOURIS )
Information sur la source
Description
Cette source a pour but de présenter le Hooking. Le hooking est un moyen de "capturer" les messages envoyés à notre application, de les traiter, et de décider de les faire suivre ou non. Ici, nous allons juste capturer les messages du clavier et ne pas les renvoyer. Ainsi, le clavier ne fonctionnera plus. Pareil pour la souris. Biensur, il y a d'autres moyens de bloquer le clavier ou la souris beaucoup plus simple, mais cette technique permet de beaucoup de chose. Je sais aussi qu'il y a de nombreuse source sur le bloquage clavier et souris mais elles ne marchaient pas grace au hooking et une fois le bloquage effectué, il fallait rebooter... PS: Je ne l'ai pas encore commenté, mais ça viendra dans la semaine...
Source
- Option Explicit
- Global HookHandleClip As Long
- Global HookHandleMouse As Long
-
- Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
- Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
- Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
-
- Public Const WH_MOUSE = 7
- Public Const WH_KEYBOARD_LL = 13
-
- Public Const HC_ACTION = 0
-
- ' ###################################################################################################
- ' Hook Clavier#######################################################################################
- ' ###################################################################################################
-
- Function HookClipBoard() As Integer
- On Error GoTo HandledErr
-
- ' Dans cette fonction, je lance un hooking clavier. Le 1er paramètre définit l'IDHook
- ' ( en l'occurence le clavier ).
- ' ( L'IdHook est définit par des constantes qui sont dans la visionneuse d'API )
-
- ' Le 2ème paramètre est l'adresse de la fonction qui traite les messages windows.
- ' Attention , "AdressOf" ne peut être utilisé que pour un fonction qui est dans un module.
-
- ' Le 3ème paramètre est la DLL qui contient la procédure de Hook ( Ici, c'est l'instance du programme
- ' qui contient cette procédure ( HookRedirClip )
-
- ' Le dernier paramètre, est le thread sur lequel agit le hook. "0" permet de ne pas définir de thread
- ' précis, et donc de hooker tous les threads.
-
- ' /!\ Si le hook agit sur un thread précis qui a été crée par le programme lui même, il faut
- ' que le 3ème paramètre ( hmod soit à "NULL" )
-
- ' Lancement du Hook => Redirection des messages Windows sur notre fonction HookRedirClip
- HookHandleClip = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf HookRedirClip, App.hInstance, 0)
-
- ' La fonction renvoi 1 si elle à fonctionné, et 0 s'il y a eu une erreur.
- HookClipBoard = 1
-
- Exit Function
-
- HandledErr:
- HookClipBoard = 0
-
- End Function
-
- Function UnHookClipBoard() As Integer
- On Error GoTo HandledErr
-
- ' Cette fonction est très importante, elle permet de rediriger les messages vers le thread
- ' d'origine. Si vous ne l'appelez pas avant de quitter, vous devrez rebooter ;-)
-
- ' Appel l'API d'Unhooking
- UnhookWindowsHookEx HookHandleClip
-
- ' Pareil que précédent, la fonction renvoi 1 ou 0 selon la réussite ou l'echec de la fonction.
- UnHookClipBoard = 1
-
- Exit Function
-
- HandledErr:
- UnHookClipBoard = 0
-
- End Function
-
- Public Function HookRedirClip(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
-
- ' Voici la fonction qui va traiter les messages filtrés par le hook.
- ' Notre but étant de paralyser le clavier, il nous suffit de ne pas renvoyer les messages
- ' qui lui sont destinés. Nous renvoyons donc -1 ( Considéré comme valeur Nulle ).
-
- HookRedirClip = -1
-
- End Function
-
- ' ###################################################################################################
- ' Hook Souris########################################################################################
- ' ###################################################################################################
-
-
- ' Le principe étant strictement équivalent il nous suffit juste de changer la constante du IdHook.
- ' Donc : Voir plus haut ! :p
-
- Function HookMouse() As Integer
- On Error GoTo HandledErr
-
- HookHandleMouse = SetWindowsHookEx(WH_MOUSE, AddressOf HookRedirMouse, App.hInstance, 0)
- HookMouse = 1
-
- Exit Function
-
- HandledErr:
- HookMouse = 0
-
- End Function
-
- Function unHookMouse() As Integer
- On Error GoTo HandledErr
-
- UnhookWindowsHookEx HookHandleMouse
- unHookMouse = 1
-
- Exit Function
-
- HandledErr:
- unHookMouse = 0
-
- End Function
-
- Public Function HookRedirMouse(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
- HookRedirMouse = -1
- End Function
Option Explicit
Global HookHandleClip As Long
Global HookHandleMouse As Long
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Const WH_MOUSE = 7
Public Const WH_KEYBOARD_LL = 13
Public Const HC_ACTION = 0
' ###################################################################################################
' Hook Clavier#######################################################################################
' ###################################################################################################
Function HookClipBoard() As Integer
On Error GoTo HandledErr
' Dans cette fonction, je lance un hooking clavier. Le 1er paramètre définit l'IDHook
' ( en l'occurence le clavier ).
' ( L'IdHook est définit par des constantes qui sont dans la visionneuse d'API )
' Le 2ème paramètre est l'adresse de la fonction qui traite les messages windows.
' Attention , "AdressOf" ne peut être utilisé que pour un fonction qui est dans un module.
' Le 3ème paramètre est la DLL qui contient la procédure de Hook ( Ici, c'est l'instance du programme
' qui contient cette procédure ( HookRedirClip )
' Le dernier paramètre, est le thread sur lequel agit le hook. "0" permet de ne pas définir de thread
' précis, et donc de hooker tous les threads.
' /!\ Si le hook agit sur un thread précis qui a été crée par le programme lui même, il faut
' que le 3ème paramètre ( hmod soit à "NULL" )
' Lancement du Hook => Redirection des messages Windows sur notre fonction HookRedirClip
HookHandleClip = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf HookRedirClip, App.hInstance, 0)
' La fonction renvoi 1 si elle à fonctionné, et 0 s'il y a eu une erreur.
HookClipBoard = 1
Exit Function
HandledErr:
HookClipBoard = 0
End Function
Function UnHookClipBoard() As Integer
On Error GoTo HandledErr
' Cette fonction est très importante, elle permet de rediriger les messages vers le thread
' d'origine. Si vous ne l'appelez pas avant de quitter, vous devrez rebooter ;-)
' Appel l'API d'Unhooking
UnhookWindowsHookEx HookHandleClip
' Pareil que précédent, la fonction renvoi 1 ou 0 selon la réussite ou l'echec de la fonction.
UnHookClipBoard = 1
Exit Function
HandledErr:
UnHookClipBoard = 0
End Function
Public Function HookRedirClip(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' Voici la fonction qui va traiter les messages filtrés par le hook.
' Notre but étant de paralyser le clavier, il nous suffit de ne pas renvoyer les messages
' qui lui sont destinés. Nous renvoyons donc -1 ( Considéré comme valeur Nulle ).
HookRedirClip = -1
End Function
' ###################################################################################################
' Hook Souris########################################################################################
' ###################################################################################################
' Le principe étant strictement équivalent il nous suffit juste de changer la constante du IdHook.
' Donc : Voir plus haut ! :p
Function HookMouse() As Integer
On Error GoTo HandledErr
HookHandleMouse = SetWindowsHookEx(WH_MOUSE, AddressOf HookRedirMouse, App.hInstance, 0)
HookMouse = 1
Exit Function
HandledErr:
HookMouse = 0
End Function
Function unHookMouse() As Integer
On Error GoTo HandledErr
UnhookWindowsHookEx HookHandleMouse
unHookMouse = 1
Exit Function
HandledErr:
unHookMouse = 0
End Function
Public Function HookRedirMouse(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
HookRedirMouse = -1
End Function
Conclusion
Je me suis inspiré de la source de Ovidiu Crisan. http://vbwork.4mg.com
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 15 juin 2005 19:49:00 :
- Ajout des commentaires !
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Hook du clavier [ par Icem@n ]
quelqu'un a t'il les source d'une DLL qui permets de faire un HOOK sur le clavier : setwindowshookexMerci d'avance
déplacer le curseur de la souris... [ par nioupy ]
bonjour,bon, voila, pour vous expliquer le problème : j'utilise un logiciel qui n'est absolument pas optimisé pour une utilisation clavier... en clair
Blokage clavier et souris [ par XVR232 ]
Bon, ben chuis tombé sur un site, ou y avais un peu de code source vb, et g trouvé ca : Shell "rundll32 mouse,disable" Shell "rundll32 keyboard,
Désactiver un périphérique [ par Jonef ]
J'aimerai savoir comment désactiver un périphérique tel que la souris ou le clavier.Je sais déjà désactiver une souris et un clavier mais le problème
hook clavier pour remplacer un caractere par un autre [ par juju62611 ]
j'ai mis en place dans mon doce vb un hook sur le clavierafin de remplacer A par Ble probleme est que je ne sais pas comment annuler le Aj'ai donc AB
Curseur Clavier, curseur Souris [ par Cpapy ]
Bonjour,Sur un contrôle richtextbox, je souhaiterais, par programme, positionner le curseur de la Souris sur le Curseur clavierA bientôt peut-être et
gestion souris et clavier dans excel [ par marcod59 ]
Bonjour,Je voudrais savoir s'il est possible dans excel de gerer la souris et le clavier ? Je m'explique :Il faut que je lance une macro qui se lancer
handle d'un control ayant le focus clavier mais pas le curseur souris [ par bassardg ]
Salut,Je galere depuis 2 jours à la recher d'un petit bout de code pour me permetre de recuperer le handle du control sur une form dont je ne suis pas
Désactiver le clavier et la souris [ par Flyer ]
Qui à une idée comment on peut désactiver le clavier et la souris. Ya une API qui fait ca ?Merci
Hook Clavier - WM_KEYUP - WM_KEYDOWN [ par 3psilon ]
SltJ'utilise un hook clavier dans mon appli pour gérer tous les raccourcis clavier. Je précise que c la premiere fois que j'utilise les hook :).Cela f
|
Téléchargements
Logiciels à télécharger sur le même thème :
|