
Hook para una sola tecla
Publicado por Fran (13 intervenciones) el 12/01/2014 12:02:26
Saludos a todos:
Tengo un programa hecho en VB.NET para reconocer teclas (aunque esté minimizada la ventana,mediante un hook de teclado) y reproducir un sonido según que tecla.
Public Class Form1
Dim iresult As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Private WithEvents kbHook As New KeyboardHook
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
End Sub
Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyDown
iresult = mciExecute("Play C:\sonido1.wav")
End Sub
Private Sub kbHook_KeyUp(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyUp
iresult = mciExecute("Play C:\sonido1.wav")
End Sub
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
If ((keyData = Keys.CapsLock) OrElse _
(keyData = Keys.NumLock) OrElse _
(keyData = Keys.Scroll)) Then
KeysLockIndicator.AudioPlay(keyData)
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.A Then
iresult = mciExecute("Play C:\sonido1.wav")
End If
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.B Then
iresult = mciExecute("Play C:\sonido2.wav")
End If
End Sub
.........
Con este código consigo que toque la tecla que toque suene el sonido "sonido1.wav",aunque esté minimizada la ventana.
Mi pregunta es ¿cómo consigo que si toco la una tecla distinta suene "sonido2.wav", otra " sonido3.wav".... y así sucesivamente para que cada tecla tenga un sonido aunque esté minimizada la ventana?
Muchas gracias de antemano.
Tengo un programa hecho en VB.NET para reconocer teclas (aunque esté minimizada la ventana,mediante un hook de teclado) y reproducir un sonido según que tecla.
Public Class Form1
Dim iresult As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Private WithEvents kbHook As New KeyboardHook
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
End Sub
Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyDown
iresult = mciExecute("Play C:\sonido1.wav")
End Sub
Private Sub kbHook_KeyUp(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyUp
iresult = mciExecute("Play C:\sonido1.wav")
End Sub
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
If ((keyData = Keys.CapsLock) OrElse _
(keyData = Keys.NumLock) OrElse _
(keyData = Keys.Scroll)) Then
KeysLockIndicator.AudioPlay(keyData)
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.A Then
iresult = mciExecute("Play C:\sonido1.wav")
End If
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.B Then
iresult = mciExecute("Play C:\sonido2.wav")
End If
End Sub
.........
Con este código consigo que toque la tecla que toque suene el sonido "sonido1.wav",aunque esté minimizada la ventana.
Mi pregunta es ¿cómo consigo que si toco la una tecla distinta suene "sonido2.wav", otra " sonido3.wav".... y así sucesivamente para que cada tecla tenga un sonido aunque esté minimizada la ventana?
Muchas gracias de antemano.
Valora esta pregunta


0