begin process at 2008 07 05 05:01:27
1 205 048 membres
34 nouveaux aujourd'hui
14 118 membres club

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 !

Sujet : Hook / Remplacement de touche [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (titoupit)

Hook / Remplacement de touche le 26/08/2005 16:40:40

titoupit

Bonjour,

J'intercepte le flux clavier avec un Hook et je bloque la touche "." du pavé numérique.

Mon problème c'est que j'aimerai remplacer cette touche par un "," ... mais lorsque je fait un sendkey ou keybd_event, mon hook intercepte le "," et me le recrache aprés celui que j'envoi "à la main" => Résultat je me retrouve avec ",,"

J'ai tout essayé mais j'y arrive tout simplement paaaaaaaaaassssss =>

****************************************************************

Public Function IsHooked(ByRef Hookstruct As KBDLLHOOKSTRUCT) As Integer
    If (Hookstruct.vkCode = VK_DECIMAL) Then
        Return Hookstruct.vkCode
    End If
    Return 0
End Function

****************************************************************

Public Function KeyboardCallback(ByVal Code As Integer, _
  ByVal wParam As Integer, _
  ByRef lParam As KBDLLHOOKSTRUCT) As Integer

    If (Code = HC_ACTION) Then
        If IsHooked(lParam) <> 0 Then
            Return 1
        End If
    End If

    Return CallNextHookEx(KeyboardHandle, Code, wParam, lParam)
End Function

****************************************************************

Public Delegate Function KeyboardHookDelegate( _
  ByVal Code As Integer, _
  ByVal wParam As Integer, _
  ByRef lParam As KBDLLHOOKSTRUCT) As Integer

****************************************************************

<MarshalAs(UnmanagedType.FunctionPtr)> Private callback As KeyboardHookDelegate

****************************************************************
'Je lance donc la fonction qui suis =>

Public Sub HookKeyboard()
    callback = New KeyboardHookDelegate(AddressOf KeyboardCallback)

    KeyboardHandle = SetWindowsHookEx( _
      WH_KEYBOARD_LL, callback, _
      Marshal.GetHINSTANCE( _
      [Assembly].GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
End Sub

****************************************************************

Quelqu'un aurai t'il une idée du "comment faire" ?

Merci!


Re : Hook / Remplacement de touche le 27/08/2005 15:21:12

ShareVB
salut,

je pense que tu remplaces simplement le code "." par "," dans vkCode et tu le passes à CallNextHookEx...

ShareVB

Re : Hook / Remplacement de touche le 29/08/2005 09:55:54

titoupit
Déja tenté, mais ca marche pas

Re : Hook / Remplacement de touche le 30/08/2005 09:59:53

ShareVB
salut,

il faut aussi renvoyer 0 depuis la callback...

ShareVB

Re : Hook / Remplacement de touche le 30/08/2005 13:54:47

titoupit
Bon j'ai pas mal galéré, mais j'ai finalement trouvé ça (c'est pas trés propre, mais au moins ça marche ^^):

Public Function KeyboardCallback(ByVal Code As Integer, _

ByVal wParam As Integer, ByRef lParam As KBDLLHOOKSTRUCT) As Integer

If (Code = HC_ACTION) Then

'Remplacement de touche "." par ","

If lParam.vkCode = VK_DECIMAL And LastReplaced_DECIMAL = "" Then

LastReplaced_DECIMAL = ","

Return 1

End If

If lParam.vkCode = VK_DECIMAL And LastReplaced_DECIMAL = "," Then

System.Windows.Forms.SendKeys.Send(",")

LastReplaced_DECIMAL = ""

Return 1

End If

Return CallNextHookEx(KeyboardHandle, Code, wParam, lParam)

End Function


Re : Hook / Remplacement de touche le 30/08/2005 14:33:32

ShareVB
salut,

et en remplaçant le vkCode et en renvoyant RETURN 0...ca ne marche pas ?

ShareVB

Re : Hook / Remplacement de touche le 31/08/2005 10:38:12

titoupit
Non, il me renvoie la touche initiale (comme si je ne changeais rien en fait!).

Attention, dans le code que j'ai passé il faut faire gaffe à l'état du caps lock (sinon on a un joli "?" qui sort  qd on est en MAJ)


Classé sous : function, end, touche, integer, hook

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS