Как изменить полноэкранный видеорежим WebBrowser?

У меня есть проект С++ с 2 WeBBrowser в TableLayoutPanel, они установлены рядом, он работает нормально, я перемещаюсь нормально, но когда я захожу на определенные веб-сайты и воспроизводю видео в полноэкранном режиме, это переводит весь мой монитор в полноэкранный режим, а не устанавливает только WeBBrowser себя, однако на других веб-сайтах, которые идеально вписываются в WeBBrowser. Есть ли способ изменить способ отображения в полноэкранном режиме? Я хочу, чтобы он отображался в полноэкранном режиме только в WeB​Browser. Я думаю, это как-то связано с Web​Browser​Base.​Active​XInstance Собственностью или Web​Browser.​Document Собственностью. Большинство примеров, которые я нашел в Интернете, относятся к старому VB и не связаны с полноэкранным свойством.

Вот аналогичный вопрос: Видео элемент управления WebBrowser входит в полноэкранный режим

В других примерах я видел метод извлечения элемента, выполнив:

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> в выводе, только несколько веб-сайтов предоставляют мне это. Почему? Как правильно получить элементы тега <video> и манипулировать ими в С++?

Чтобы найти все теги <video, вам также может понадобиться найти элементы <iframe> и <frame> и отклонить их.

noseratio 12.04.2019 22:09

@noseratio Спасибо, я искал в источнике страницы <iframe> и <frame>, но не смог их найти. Интересно, как другие браузеры, такие как Chrome, могут найти их путем проверки, однако Chrome не показывает ни один из этих тегов в исходном коде своей страницы, только проверяя каждый элемент в браузере Chrome, я могу найти теги <video> под множеством тегов <div> и т. д., я уверен проверка из браузеров получает их с помощью JavaScript, действительно ли мне нужно встраивать JavaScript в мой проект C++?

Simple 13.04.2019 00:19
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Then I didn't find any tag element in the output, only a few websites provide me that. Why?

Позвольте мне сделать обоснованное предположение. Для некоторых страниц, на которые вы ссылаетесь, DOM строится динамически и асинхронно. Это означает, что этих тегов <video> может просто еще не быть.

Таким образом, вам может понадобиться некоторая асинхронная логика опроса, которая отслеживает изменения DOM, в частности, ищет теги <video>.

Возможно, не удастся найти 100% работающее решение для всех случаев, но взгляните на мой другой пост, который занимается этой проблемой.

Другие вопросы по теме