如何检测使用C#播放的媒体?

时间:2019-07-31 00:41:16

标签: c# .net winapi

我想知道如何检测当前窗口是否正在播放任何类型的媒体(视频,音乐等),类似于用什么能量设置来确定计算机是否可以进入睡眠/休眠模式?

我正在尝试检测计算机空闲时间。我当前使用的是来自user32.dll的GetLastInputInfo,但它只是考虑了用户输入,但是没有播放任何不应将计算机闲置的媒体。

我试图找到C#API或本机调用,但是找不到信息。我正在使用最新版本的.NET Framework。

1 个答案:

答案 0 :(得分:1)

通常来说,程序不声明它们正在播放媒体-而是调用SetThreadExecutionState来告诉Windows计算机不应该休眠。

也就是说-Windows 10最近增加了对程序的支持,以向操作系统声明它们当前正在播放媒体,以便它们与Windows的媒体控件集成在一起(例如,在iOS上,如何通过以下方式控制播放视频或音频的程序)控制中心)。

当我轻按音量控制时,屏幕上会显示以下内容:

enter image description here

...但是Chrome在这里存在问题,因为我实际上并未在Chrome中播放任何媒体,但它正在告诉Windows。

我不知道使用什么Windows API来设置它-或使用哪个API来检查它-但是它使用得不是很广泛-即使Windows的内置Windows Media Player 12也没有使用它