2014-01-13 58 views
2

我有此代碼(鍵盤鉤子),用於註冊該鍵盤的所有鍵,並且它播放聲音:鉤一鍵不工作完全

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 

末級

當窗體是最大限度地發揮它的作用,但是當最小化它不起作用。 使用此代碼sound1與所有按鍵一起播放,但我希望sound1使用按鍵A和聲音2使用按鍵B播放.... 我該怎麼做?非常感謝您

+0

一個timer我要回答的評論,因爲我之前已經回答了這個問題一個受信任的代碼。有一個專門用於此目的的codeplex庫。它可以在這裏下載http://globalmousekeyhook.codeplex.com –

+1

謝謝馬克,這是非常有用的。 – Frankcoding

回答

0

這裏是從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 

然後調用它通過200mstick

+0

什麼是AV?誰相信它?順便說一句,這樣的代碼快樂的調試! :) – Neolisk

+0

@Neilisk Avira/Nod32 /卡巴斯基全部着名的av檢測它爲垃圾郵件程序集它是壞的專業程序員 – K3rnel31