c# - 如何检测使用 C# 播放的媒体?
问题描述
我想知道如何检测当前窗口是否正在播放任何类型的媒体(视频、音乐等),类似于确定计算机是否可以进入睡眠/休眠模式的能量设置?
我正在尝试检测计算机空闲多长时间。我目前正在使用来自 user32.dll 的 GetLastInputInfo,但它只考虑用户输入,但如果有任何不应该考虑计算机空闲的媒体播放,则不会。
我试图找到 C# API 或本机调用,但找不到信息。我正在使用最新版本的 .NET Framework。
解决方案
一般来说,程序不会声明它们正在播放媒体,而是会调用SetThreadExecutionState
来告诉 Windows 计算机不应进入睡眠状态。
也就是说 - Windows 10 最近增加了对程序向操作系统声明它们当前正在播放媒体的支持,以便它们与 Windows 的媒体控件集成(例如,在 iOS 上,任何播放视频或音频的程序都可以从控制中心控制)。
当我轻推音量控制时,屏幕上会显示以下内容:
...但是 Chrome 在这里有问题,因为我实际上并没有在 Chrome 中播放任何媒体,但它告诉 Windows 它是。
我不知道使用什么 Windows API 来设置它——或者使用哪个 API 来检查它——但它并没有被广泛使用——甚至 Windows 的内置 Windows Media Player 12 也不使用它。
推荐阅读
- server - Ghost 博客:Google Compute Engine - 意外关闭连接
- php - 什么会导致我的 ajax 无法执行所有命令?
- python - SPARQL 查询返回的行数比预期的多
- azure - 在 Azure 中重置域控制器的密码
- amazon-web-services - 即使在 EC2 上增加卷和分区大小后,设备上也没有剩余空间
- supervisord - “通知发送”的命令在主管中不起作用
- file - C 一般 sscanf 返回
- python - 如何找到定义了两个点的矩形的面积和周长?
- node.js - TypeError:无法在字符串上创建属性“_id”......即使在使用 JSON.Parse 之后??(MongoDB /Node.js / Twitter API)
- java - Java - 当从另一个方法创建对象时,尝试从主方法中打印对象的 get 方法