C# 用C语言编写的多媒体键盘进行多媒体控制#

C# 用C语言编写的多媒体键盘进行多媒体控制#,c#,winapi,keyboard,winmm,C#,Winapi,Keyboard,Winmm,我有键盘,还有笔记本电脑内置的键盘,上面有多媒体键。其中一个多媒体键当然是暂停/播放,它是键盘驱动程序的一个功能,可以分配给其他键。按下时,它将暂停/播放iTunes、Windows Media Player等,具体取决于我的“上次激活”媒体应用程序 我的问题是,在C#中,如何复制此功能以暂停/播放系统声音。我浏览了API,唯一看得很近的是winmm.dll WaveOutpuse和MidiOutpuse函数有一个名为.NET的类,允许您将按键操作推送到另一个应用程序,但这不允许(AFAIK)发

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

我的问题是,在C#中,如何复制此功能以暂停/播放系统声音。我浏览了API,唯一看得很近的是winmm.dll WaveOutpuse和MidiOutpuse函数

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

因此,我猜您需要API函数

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


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

这回答了我提出的问题,但它存在一个问题,无法满足我的需要。如果我的媒体已经暂停,我不想在锁定会话之前盲目地发送播放/暂停键并开始播放。我需要一种方法,可以只发送暂停播放的命令,也可以在发送播放/暂停键之前检查播放是否已暂停。据我所知,您的选择是“播放/暂停”或“停止”-我认为没有特定的全局热键区分播放和暂停。