如何更改网络浏览器全屏视频模式?
How to change WebBrowser fullscreen video mode?
我有一个 c++ 项目,TableLayoutPanel
有 2 个WeBBrowser
,它们并排设置,它工作正常,我导航正常,但是当我去特定网站并全屏播放视频时,将我的整个显示器设置为全屏,而不是仅设置WeBBrowser
本身,但是在其他网站上非常适合WeBBrowser
。有没有办法改变它全屏显示的方式?我想让它只在WeBBrowser
中全屏显示。我认为这与WebBrowserBase.ActiveXInstance
财产或WebBrowser.Document
财产有关。我在互联网上找到的大多数示例都是针对旧 VB 的,与全屏属性无关。
这里有一个类似的问题: 网页浏览器控制视频元素进入全屏
在其他示例中,我看到了一种通过执行以下操作来提取元素的方法:
HtmlElement^ object = webBrowser1->Document->GetElementById("video");
但是我不知道如何处理该代码以格式化该视频,然后将其设置回修复全屏模式的WeBBrowser
。
编辑:
我走得更远,我可以从几个网站获得<video>
元素,这是我的方法:
private: System::Void webBrowser1_DocumentCompleted(System::Object^ sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^ e) {
HtmlElementCollection^ videoElements = webBrowser1->Document->GetElementsByTagName("video");
videoElements[0]->SetAttribute("style", "width: 640px; height: 480px;"); //Not sure if this is a proper way to set an attribute in this element.
}
问题在于,并非每个网站都允许您访问<video>
标签元素,因此对于这些网站,我执行了以下代码以确保源代码中确实没有<video>
标签元素:
System::Diagnostics::Debug::Write(webBrowser1->DocumentText);
然后我在输出中没有找到任何<video>
标签元素,只有少数网站为我提供了。为什么?如何在 c++ 中真正正确获取和操作<video>
标签元素?
然后我在输出中没有找到任何标签元素,只有少数网站为我提供了这个元素。为什么?
让我做一个有根据的猜测。对于您引用的某些页面,DOM 是动态和异步构建的。这意味着,这些<video>
标签可能根本不存在。
因此,您可能需要一些异步轮询逻辑来监视 DOM 更改,特别是查找<video>
标记。
可能无法提出 100% 的工作解决方案来涵盖所有情况,但请查看我处理此问题的其他帖子。
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 为什么在保护模式下继承升级不起作用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 此模式的C++RegEx
- 如何在c++中录制具有精确帧时间戳的视频
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 使用可变模板的Broadcaster/Listener模式
- c++方法参数只能在linux的发布模式下自行更改
- 资源管理设计模式
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何更改网络浏览器全屏视频模式?
- 如何在虚幻编辑器内容浏览器中查找虚幻游戏模式
- 如何在 SFML 中使用所有视频模式制作矢量
- 从C++图像帧到客户端浏览器中的 html5 <视频标记
- Blackmagic DirectShow Framerate - 为什么我没有获得我的捕获设备能够实现的所有视频模式
- SFML仅列出调试模式下的无效视频模式
- C++/OpenCV流媒体摄像机视频/图像(MJPEG)从套接字进入浏览器(Windows 8.1)