Bonjour,
Dans le cadre d'une petite application, j'ai a réaliser un petit Key Hooker.
Le principe est simple, c'est de "convertir" les entrées suivantes :
Numpad2 -> Bas
Numpad3 -> Page Down
Numpad4 -> Gauche
Numpad5 -> Espace
Numpad6 -> Droite
Numpad8 -> Haut
Numpad9 -> Page Up
J'ai déja écrit le code suivant :
Public Class Form1
'Keys
Dim DownKey As Boolean = False
Dim UpKey As Boolean = False
Dim LeftKey As Boolean = False
Dim RightKey As Boolean = False
Dim PgUp As Boolean = False
Dim PgDwn As Boolean = False
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Bck.RunWorkerAsync()
Button1.Enabled = False
Button2.Enabled = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Bck.CancelAsync()
Button1.Enabled = True
Button2.Enabled = False
End Sub
Private Sub Bck_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles Bck.DoWork
Do
If Bck.CancellationPending Then
Exit Do
End If
Application.DoEvents()
If DownKey Then SendKeys.SendWait(Keys.Down)
If LeftKey Then SendKeys.SendWait(Keys.Left)
If UpKey Then SendKeys.SendWait(Keys.Up)
If RightKey Then SendKeys.SendWait(Keys.Right)
If PgDwn Then SendKeys.SendWait(Keys.PageDown)
If PgUp Then SendKeys.SendWait(Keys.PageUp)
Loop
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
DownKey = keyData = Keys.NumPad2
UpKey = keyData = Keys.NumPad8
LeftKey = keyData = Keys.NumPad4
RightKey = keyData = Keys.NumPad6
PgDwn = keyData = Keys.PageDown
PgUp = keyData = Keys.PageUp
End Function
End Class
Cela fonctionne dans le programme mais pas de façon globale, car le principe est de renvoyer ces touches dans un autre programme.
Merci d'avance pour vos idées :)