如何检测现在是否播放任何视频?

时间:2012-06-24 12:17:47

标签: c# c vbscript autoit autohotkey

如何使用检测是否正在播放任何视频?

可以在任何本地播放器,基于网络的播放器或html5播放器中播放/流式传输视频。我们不知道播放器的名称也可能不在全屏播放器中。

PS。检测CPU负载可能无法始终提供正确的结果,因此不可接受。

1 个答案:

答案 0 :(得分:2)

我在当天做了一些工作。有一个WIN32API(旧学校)获取/设置是否禁用屏幕保护程序(在user32.dll,GetScreenSaverActive(),SetScreenSaverActive - 请参阅:http://www.codeproject.com/Articles/17067/Controlling-The-Screen-Saver-With-C)。这是播放视频时最有可能设置的标志,但它不是100%可靠,因为并非每个播放器都会实现它。它适用于大多数浏览器视频,无论是通过插件,本机还是通过DirectX播放。这也适用于大多数(所有?)外部播放器,如vlc,windvd等。

但是

没有确定的,100%的方式来确定视频播放。你不能;  1.检查声音播放,因为用户可能正在使用iTunes而不是所有视频都有声音  2.检查全屏(通常是更好的选项),因为视频可能正在浏览器中播放  3.检查cpu / gpu负载,因为它不可靠,你没有其他方法可以确定  4.绝对确保玩家在最小化时没有清除/重置win32标志

另一个选择是尝试整理所有已知播放器的可执行可执行名称列表(可行但查找数据时很费时,特别是旧版本),并检查它们是否正在运行。这不是100%可靠,既可以预先加载,也可以是浏览器,但实际上并不是在那个时刻播放视频。

简而言之,我不知道100%的方式,但有几种方式可以让你获得90-95%。那是知道是否有视频播放的目的?也许有一种更简单的方法可以找到你想要的东西......