在 directshow 中丢失播放窗口句柄/主表面?

发布于 2024-12-03 21:18:21 字数 450 浏览 1 评论 0原文

我正在使用 WPF 和 Directshowlib 将视频渲染到 HWndHost 对象。我遇到了两个问题,可能是相关的。

如果我启动应用程序,然后切换到全屏运行的另一个应用程序,例如魔兽世界,则应用程序在调用 IVMRFilterConfig::SetRenderingMode(VMRMode.Windowless); 时返回错误:

0x887600E1,DDERR_NOEXCLUSIVEMODE,操作要求应用程序具有独占模式但该应用程序没有独占模式。

在其他情况下,当视频窗口正常并且正在播放视频时,如果我通过以管理员身份启动另一个应用程序等方式导致 UAC 对话框,或者如果我锁定屏幕,我也会丢失播放窗口。我的视频渲染窗口变灰,视频播放停止(我不再收到媒体结束事件)。我没有收到任何错误,只有一个灰色的渲染窗口。

在这两种情况下,我该如何确保获得并保留视频窗口?为什么我会丢失视频窗口?

谢谢!

I am using WPF and Directshowlib to render video to a HWndHost object. I'm having two problems with this, probably related.

If I start up my application and then switch to another app running fullscreen, e.g. World of Warcraft, the application returns an error when calling IVMRFilterConfig::SetRenderingMode(VMRMode.Windowless);:

0x887600E1, DDERR_NOEXCLUSIVEMODE, Operation requires the application to have exclusive mode but the application does not have exclusive mode.

In other circumstances, when the video window is fine and video playing back, if I cause a UAC Dialog by, for example, starting another application as Administrator or if I lock the screen I also lose the playback window. My video rendering window goes grey and video playback just stops (I get no media ended events any more). I get no error, just a grey rendering window.

What can I do to ensure I get and keep a video window in both these circumstances? Why am I losing the video window anyway?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文