【问题标题】:Multimedia control with a multimedia keyboard in C#在 C# 中使用多媒体键盘进行多媒体控制
【发布时间】:2012-08-03 15:23:14
【问题描述】:

我有键盘,以及笔记本电脑内置的键盘,它有多媒体键。其中一个多媒体键当然是暂停/播放,它是键盘驱动程序的一项功能,可以分配给其他键。当它被推送时,它将暂停/播放 iTunes、Windows Media Player 等,具体取决于我的“最后一次活动”媒体应用程序是什么。

我的问题是,在 C# 中,我如何复制此功能以暂停/播放系统声音。我查看了 API,唯一看起来很接近的是 winmm.dll waveOutPause 和 midiOutPause 函数

【问题讨论】:

    标签: c# winapi keyboard winmm


    【解决方案1】:

    .NET 中有一个名为 SendKeys 的类,它允许您将按键推送到另一个应用程序,但这(AFAIK)不允许发送特殊键。

    因此,我猜您需要 API 函数 SendInput

    有一个包含媒体键here 的键码列表,因此您可以模拟播放/暂停或音量控制等键。

    编辑:使用 API 的一种可能替代方法是捕获当您按下该键时(在 WinForms 或 WPF 应用程序中)您的多媒体键盘发送的任何内容,然后看看您是否可以使用常规的SendKeys 实现来复制该按键。

    【讨论】:

    • 这回答了我提出的问题,但它有一个问题,使它不能满足我的需要。如果我的媒体已经暂停,我不会只想在锁定会话之前盲目发送播放/暂停键并开始播放。我需要一种方法,要么只发送一个命令来暂停播放,要么在发送播放/暂停键之前检查它是否已暂停。
    • 据我所知,您的选择是“播放/暂停”或“停止” - 我认为没有特定的全局热键可以区分播放和暂停。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2011-04-11
    相关资源
    最近更新 更多