0

我用 Visual Basic 在 Visual Studio 2010 中制作了一个音乐播放器。我现在想将右上角的键分配给一个功能。至少在我的键盘上,“Home”、“Pg Up”、“Pg Down”和“End”键上都有媒体键(暂停/播放、停止、上一个、前进)。这些是用蓝色写的,所以很明显,您需要按“Fn”才能使用替代功能(而不是“Home”,按“Fn”+“Home”)。可能不是最清楚的解释,但理解我想要做什么并不完全是火箭科学。我想在用户按住“Fn”并按下上述按钮之一时启动一个功能。

提前致谢

4

1 回答 1

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
于 2013-07-14T22:30:34.577 回答