Hook Clavier [Résolu]

CDSIT 4 Messages postés jeudi 1 juin 2006Date d'inscription 11 janvier 2008 Dernière intervention - 6 déc. 2007 à 09:35 - Dernière réponse : CDSIT 4 Messages postés jeudi 1 juin 2006Date d'inscription 11 janvier 2008 Dernière intervention
- 6 déc. 2007 à 11:57
Bonjour à tous,

J'ai vu sur le site pas mal de sources intéressantes et notamment le prog de ym_trainz sur les keystrokes mais son prog est encore trop complet pour moi, je m'explique :
J'ai juste besoin d'empêcher quelqu'un de faire un ctrl + echap tout en laissant ces deux touches opérationnelles si elles sont utilisées séparément.
Le tout dans un tout petit prog qui tournerait en tâche de fond sans être visible de l'utilisateur.

Merci à ceux qui connaissent le sujet et qui sont en mesure de m'aider.

J'ai du code sympa pour modifier l'interface windows mais il me manque cette petite chose...
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
pneau 258 Messages postés mercredi 21 avril 2004Date d'inscription 27 octobre 2010 Dernière intervention - 6 déc. 2007 à 10:04
3
Merci
salut,
Dans notre appli on utilise l'api SetHookWindows qui nous permet de filtrer les entrées claviers

Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private 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


Private Const WH_KEYBOARD = 2


Public sReponse As String


Public hHook As Long


'Fonction qui filtre les entrées clavier
Public Function KeyBoardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  
   If nCode >= 0 Then
'   'Process keys you want to filter
      Debug.Print AFF_POSTOUC      If (wParam Asc("V") Or wParam Asc("v")) And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "V"
         Exit Function      ElseIf (wParam Asc("F") Or wParam Asc("f")) And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "F"
         Exit Function      ElseIf (wParam Asc("C") Or wParam Asc("c")) And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "C"
         Exit Function      ElseIf (wParam Asc("A") Or wParam Asc("a")) And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "A"
         flag_abandon = True
         Exit Function
      ElseIf wParam = Asc(".") And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "F"
         Exit Function
      ElseIf wParam = vbKeyReturn And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "V"
         Exit Function
      ElseIf wParam = vbKeyNumpad0 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "0"
         Exit Function
      ElseIf wParam = vbKeyNumpad1 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "1"
         Exit Function
      ElseIf wParam = vbKeyNumpad2 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "2"
         Exit Function
      ElseIf wParam = vbKeyNumpad3 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "3"
         Exit Function
      ElseIf wParam = vbKeyNumpad4 And lParam <> 0 Then
         KeyBoardProc = 1
         Exit Function
      ElseIf wParam = vbKeyNumpad5 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "5"
         Exit Function
      ElseIf wParam = vbKeyNumpad6 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "6"
         Exit Function
      ElseIf wParam = vbKeyNumpad7 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "7"
         Exit Function
      ElseIf wParam = vbKeyNumpad8 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "8"
         Exit Function
      ElseIf wParam = vbKeyNumpad9 And lParam <> 0 Then
         KeyBoardProc = 1
         sReponse = "9"
         Exit Function
      End If
   End If
   'Debug.Print AFF_POSTOUC
   KeyBoardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
   sReponse = ""
  
End Function


Public Sub HookWindow()
   hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyBoardProc, 0&, App.ThreadID)
End Sub


voilà avec ce code, à partir de vb
à un moment on fait "HookWindow" qui enclenche le filtre clavier
puis quand notre process est terminé
UnHookWindow...

en espérant que cela va t'aider...

et a ta dispo si tu veux des précisions....

cordialement

Pat

 Don't Worry , Be Happy





<hr />
lorsque le problème est résolu, pensez Réponse Acceptée

Merci pneau 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de pneau
CDSIT 4 Messages postés jeudi 1 juin 2006Date d'inscription 11 janvier 2008 Dernière intervention - 6 déc. 2007 à 11:57
0
Merci
Ce code ne fonctionne pas dans mon module, je crois que quelquechose m'échappe, j'ai juste besoin d'empêcher l'appui simultanné sur les deux touches echap & control

Peut-être serait-il plus simple d'empêcher le menu démarrer de s'ouvrir. Dans une bouche par exemple ?

Si quelqu'un d'autre a une proposition, je suis preneur !
Commenter la réponse de CDSIT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.