首页 > 解决方案 > 如何检测使用 C# 播放的媒体?

问题描述

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

我正在尝试检测计算机空闲多长时间。我目前正在使用来自 user32.dll 的 GetLastInputInfo,但它只考虑用户输入,但如果有任何不应该考虑计算机空闲的媒体播放,则不会。

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

标签: c#.netwinapi

解决方案


一般来说,程序不会声明它们正在播放媒体,而是会调用SetThreadExecutionState来告诉 Windows 计算机不应进入睡眠状态。

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

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

在此处输入图像描述

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

我不知道使用什么 Windows API 来设置它——或者使用哪个 API 来检查它——但它并没有被广泛使用——甚至 Windows 的内置 Windows Media Player 12 也不使用它。


推荐阅读