2

I have this code(keyboard hook) for register all the keys of the keyboard,and it plays a sound:

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 kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyDown
    mciExecute("Play C:\sonido3.wav")
End Sub
Private Sub kbHook_KeyUp(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyUp

End Sub
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer


Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyData
        Case Keys.A
            mciExecute("Play C:\sonido1.wav")
        Case Keys.B
            mciExecute("Play C:\sonido2.wav")
    End Select
End Sub

End Class

When the form is maximized it works well,but when is minimized it doesn't work. With this code the sound1 is played with all the keys,but I want that the sound1 is played with the key A,sound 2 with key B.... How can I do this?Thank you very much

Frankcoding
  • 53
  • 1
  • 9
  • I am going to answer as a comment since I have answered this question before. There is a codeplex library that is designed for just this purpose. It is can be downloaded here http://globalmousekeyhook.codeplex.com – Mark Hall Jan 14 '14 at 01:44

2 Answers2

0

When your program is minimized, some other program is in the foreground and capturing keystrokes.

All of your events (kbHook_KeyDown, etc) are only fired when your program is in the foreground.

If you are interested in logging keys when your application is not in the foreground, please take a look at the link I nominated as duplicate (Capture any kind of keystrokes (aka keylogger), preferably c# .net but any kind will do).

Community
  • 1
  • 1
StingyJack
  • 19,041
  • 10
  • 63
  • 122
-1

here is a trusted code from AV

 public sub writelog()
 If (GetAsyncKeyState(65)) Then
        log = log + "A"
    ElseIf (GetAsyncKeyState(66)) Then
        log = log + "B"
    ElseIf (GetAsyncKeyState(67)) Then
        log = log + "C"
    ElseIf (GetAsyncKeyState(68)) Then
        log = log + "D"
    ElseIf (GetAsyncKeyState(69)) Then
        log = log + "E"
    ElseIf (GetAsyncKeyState(70)) Then
        log = log + "F"
    ElseIf (GetAsyncKeyState(71)) Then
        log = log + "G"
    ElseIf (GetAsyncKeyState(72)) Then
        log = log + "H"
    ElseIf (GetAsyncKeyState(73)) Then
        log = log + "I"
    ElseIf (GetAsyncKeyState(74)) Then
        log = log + "J"
    ElseIf (GetAsyncKeyState(75)) Then
        log = log + "K"
    ElseIf (GetAsyncKeyState(76)) Then
        log = log + "L"
    ElseIf (GetAsyncKeyState(77)) Then
        log = log + "M"
    ElseIf (GetAsyncKeyState(78)) Then
        log = log + "N"
    ElseIf (GetAsyncKeyState(79)) Then
        log = log + "O"
    ElseIf (GetAsyncKeyState(80)) Then
        log = log + "P"
    ElseIf (GetAsyncKeyState(81)) Then
        log = log + "Q"
    ElseIf (GetAsyncKeyState(82)) Then
        log = log + "R"
    ElseIf (GetAsyncKeyState(83)) Then
        log = log + "S"
    ElseIf (GetAsyncKeyState(84)) Then
        log = log + "T"
    ElseIf (GetAsyncKeyState(85)) Then
        log = log + "U"
    ElseIf (GetAsyncKeyState(86)) Then
        log = log + "V"
    ElseIf (GetAsyncKeyState(87)) Then
        log = log + "W"
    ElseIf (GetAsyncKeyState(88)) Then
        log = log + "X"
    ElseIf (GetAsyncKeyState(89)) Then
        log = log + "Y"
    ElseIf (GetAsyncKeyState(90)) Then
        log = log + "Z"
    ElseIf (GetAsyncKeyState(48)) Then
        log = log + "0"
    ElseIf (GetAsyncKeyState(49)) Then
        log = log + "1"
    ElseIf (GetAsyncKeyState(50)) Then
        log = log + "2"
    ElseIf (GetAsyncKeyState(51)) Then
        log = log + "3"
    ElseIf (GetAsyncKeyState(52)) Then
        log = log + "4"
    ElseIf (GetAsyncKeyState(53)) Then
        log = log + "5"
    ElseIf (GetAsyncKeyState(54)) Then
        log = log + "6"
    ElseIf (GetAsyncKeyState(55)) Then
        log = log + "7"
    ElseIf (GetAsyncKeyState(56)) Then
        log = log + "8"
    ElseIf (GetAsyncKeyState(57)) Then
        log = log + "9"
    ElseIf (GetAsyncKeyState(96)) Then
        log = log + "{Num0}"
    ElseIf (GetAsyncKeyState(97)) Then
        log = log + "{Num1}"
    ElseIf (GetAsyncKeyState(98)) Then
        log = log + "{Num2}"
    ElseIf (GetAsyncKeyState(99)) Then
        log = log + "{Num3}"
    ElseIf (GetAsyncKeyState(100)) Then
        log = log + "{Num4}"
    ElseIf (GetAsyncKeyState(101)) Then
        log = log + "{Num5}"
    ElseIf (GetAsyncKeyState(102)) Then
        log = log + "{Num6}"
    ElseIf (GetAsyncKeyState(103)) Then
        log = log + "{Num7}"
    ElseIf (GetAsyncKeyState(104)) Then
        log = log + "{Num8}"
    ElseIf (GetAsyncKeyState(105)) Then
        log = log + "{Num9}"
    ElseIf (GetAsyncKeyState(106)) Then
        log = log + "{Num*}"
    ElseIf (GetAsyncKeyState(107)) Then
        log = log + "{Num+}"
    ElseIf (GetAsyncKeyState(13)) Then
        log = log + "{Enter}"
    ElseIf (GetAsyncKeyState(109)) Then
        log = log + "{Num-}"
    ElseIf (GetAsyncKeyState(110)) Then
        log = log + "{Num.}"
    ElseIf (GetAsyncKeyState(111)) Then
        log = log + "{Num/}"
    ElseIf (GetAsyncKeyState(32)) Then
        log = log + " "
    ElseIf (GetAsyncKeyState(8)) Then
        log = log + "{Backspace}"
    ElseIf (GetAsyncKeyState(9)) Then
        log = log + "{Tab}"
    ElseIf (GetAsyncKeyState(16)) Then
        log = log + "{Shift}"
    ElseIf (GetAsyncKeyState(17)) Then
        log = log + "{Control}"
    ElseIf (GetAsyncKeyState(20)) Then
        log = log + "{Caps}"
    ElseIf (GetAsyncKeyState(27)) Then
        log = log + "{Esc}"
    ElseIf (GetAsyncKeyState(33)) Then
        log = log + "{PGup}"
    ElseIf (GetAsyncKeyState(34)) Then
        log = log + "{PGdn}"
    ElseIf (GetAsyncKeyState(35)) Then
        log = log + "{End}"
    ElseIf (GetAsyncKeyState(36)) Then
        log = log + "{Home}"
    ElseIf (GetAsyncKeyState(37)) Then
        log = log + "{LArrow}"
    ElseIf (GetAsyncKeyState(38)) Then
        log = log + "{UArrow}"
    ElseIf (GetAsyncKeyState(39)) Then
        log = log + "{RArrow}"
    ElseIf (GetAsyncKeyState(40)) Then
        log = log + "{DArrow}"
    ElseIf (GetAsyncKeyState(45)) Then
        log = log + "{Insert}"
    ElseIf (GetAsyncKeyState(46)) Then
        log = log + "{Del}"
    ElseIf (GetAsyncKeyState(144)) Then
        log = log + "{NumLock}"
    ElseIf (GetAsyncKeyState(188)) Then
        log = log + "{,}"
    ElseIf (GetAsyncKeyState(1)) Then
        log = log + "[L]"
    ElseIf (GetAsyncKeyState(2)) Then
        log = log + "[R]"
    End If
end sub

then call it by a timer of 200 ms tick

Hichem
  • 1,111
  • 11
  • 30