这可能是我很长时间以来读过的最奇怪的请求。首先是坏消息:不,没有开源编解码器可以在 Windows Media Player 的视频窗口中播放“.exe”生成的输出。“.exe”或更准确的PE文件(便携式可执行文件)包含程序代码,即被您的CPU解释为程序的数据。然而,视频不是程序,而是图像数据。
视频编解码器是在格式之间转换视频数据的程序。例如,它可以将压缩的 h.264 解码为适合显示的原始 RGB 数据。视频编解码器有一定的限制,例如它们解码一系列帧。
现在好消息:从技术上讲,编写这样的编解码器是可能的。不过,我无法使用 WMP 打开 .exe,因为 WMP 无法解释这些文件。但是您可以引入一个新的 FOURCC,一个标识特定视频编码格式的 4 字符代码,并使用该 FOURCC 注册一个特殊用途代码。然后,您使用该 FOURCC 创建一个特殊的 AVI 文件,其中包含对目标 .exe 的引用,而不是帧中的视频数据。当 WMP 尝试播放此文件时,它将启动此“编解码器”,而后者又可以启动 .exe。您需要在启动的应用程序和“编解码器”之间建立通信协议。必须创建一个离屏渲染表面,我会说进程之间共享的 PBuffer DC 最适合这个,即“编解码器” 创建 PBuffer 并且 .exe 在它之上创建一个 OpenGL 上下文。然后编解码器将 PBuffer 的内容作为解码后的视频帧传递给 WMP。
所以是的,可以完成这样的黑客攻击。但这会很丑陋和奇怪。
为什么不简单地为 WMP 编写一个可视化插件呢?那些也可以在视频窗口中运行,但它不需要如此丑陋的 hack。