CDSIT
Messages postés4Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention11 janvier 2008
-
6 déc. 2007 à 09:35
CDSIT
Messages postés4Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention11 janvier 2008
-
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...
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 6 déc. 2007 à 10:04
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
CDSIT
Messages postés4Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention11 janvier 2008 6 déc. 2007 à 11:57
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 !