2013-07-14 76 views
0

我在Visual Studio 2010中用Visual Basic創建了音樂播放器。現在我想將右上角的按鍵分配給一個函數。至少在我的鍵盤上,'Home','Pg Up','Pg Down'和'End'鍵都有媒體鍵(暫停/播放,停止,上一個,前進)。這些都是用藍色寫的,所以顯然你需要按'Fn'來使用替代功能(而不是'Home',按'Fn'+'Home')。可能不是最清楚的解釋,但它不完全是火箭科學來理解我想要做什麼。我想在用戶按住'Fn'並按下上面提到的其中一個按鈕時啓動一個功能。如何將Windows媒體鍵分配給Visual Basic中的函數

在此先感謝

+2

是您對VB或VBScript的問題?他們是兩種不同的語言。 –

+0

鍵盤上是否存在'Fn'鍵?我沒有這樣的鑰匙。 –

+0

我使用VB和,是,左下角的'Fn'鍵 –

回答

1

您可以捕獲使用Keys.MediaXXX常數的多媒體鍵。下面是一個標準的形式捕獲這些鍵的例子:

Public Class Form1 

    Protected Overrides Function ProcessKeyMessage(ByRef m As System.Windows.Forms.Message) As Boolean 
     Const WM_KEYDOWN As Integer = &H100 
     If m.Msg = WM_KEYDOWN Then 
      Select Case m.WParam.ToInt32 
       Case Keys.MediaStop 
        Debug.Print("Stop") 
       Case Keys.MediaPlayPause 
        Debug.Print("PlayPause") 
       Case Keys.MediaNextTrack 
        Debug.Print("Next") 
       Case Keys.MediaPreviousTrack 
        Debug.Print("Previous") 
      End Select 
     End If 
     Return MyBase.ProcessKeyMessage(m) 
    End Function 

End Class 

*這也可以在表格的KeyDown()事件中使用e.KeyData中完成的。

編輯:這裏是使用窗體的KeyDown()事件的一個例子。請注意,我啓用了KeyPreview();如果窗體上有任何控件可以獲得焦點,則需要執行此操作:

Public Class Form1 

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     Me.KeyPreview = True 
    End Sub 

    Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
     Select Case e.KeyData 
      Case Keys.MediaStop 
       Debug.Print("Stop") 
      Case Keys.MediaPlayPause 
       Debug.Print("PlayPause") 
      Case Keys.MediaNextTrack 
       Debug.Print("Next") 
      Case Keys.MediaPreviousTrack 
       Debug.Print("Previous") 
     End Select 
    End Sub 

End Class 
+0

這隻有當你的窗體有FOCUS時纔有效。如果您希望在表單沒有聚焦的情況下捕獲這些鍵,那麼您必須使用低級別鍵盤鉤子(Google for WH_KEYBOARD_LL)來捕獲這些鍵。 –

+0

我無法讓它工作。我是否必須通過表單1的KeyDown函數調用函數? –

+0

查看上面編輯過的KeyDown()方法的帖子... –

相關問題