【问题标题】:How to assign Windows media keys to functions in Visual Basic如何将 Windows 媒体键分配给 Visual Basic 中的函数
【发布时间】:2013-07-17 00:11:35
【问题描述】:

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

提前致谢

【问题讨论】:

  • 您的问题是关于 VB 还是 VBScript?它们是两种不同的语言。
  • 你的键盘上有那个'Fn'键吗?我没有这样的钥匙。
  • 我正在使用 VB,是的,左下角的“Fn”键

标签: visual-studio-2010 vbscript media-player audio-player


【解决方案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

【讨论】:

  • 这仅在您的表单具有 FOCUS 时有效。如果您想在表单没有焦点时捕获这些键,那么您必须使用低级键盘挂钩(Google for WH_KEYBOARD_LL)来捕获它们。
  • 我无法让它工作。是不是一定要通过表格1的KeyDown函数调用该函数?
  • 我只需要查看上面提到的 WH_KEYBOARD_LL,所以它不需要关注,谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多