Как я могу полностью отключить браузерные функции в специальной программе запуска игр на основе CEF?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу полностью отключить браузерные функции в специальной программе запуска игр на основе CEF?

Сообщение Anonymous »

Я разрабатываю индивидуальную программу запуска игр с использованием CEF (Chromium Embedded Framework) в Windows.

Цель состоит в том, чтобы использовать CEF как только средство визуализации пользовательского интерфейса, а не как веб-браузер.
Однако я столкнулся с проблемой:

Даже несмотря на то, что я отключил большинство параметров, связанных с браузером, пользователи все равно могут запускать поведение, подобное браузеру, например как:
  • Код: Выделить всё

    Ctrl + Shift + I
    → Открытие инструментов разработчика
  • Код: Выделить всё

    window.open()
    → новые пустые всплывающие окна.
  • щелкните правой кнопкой мыши → контекстное меню по умолчанию.
  • наведение ссылки → показывает URL-адрес в строке состояния.
  • выбираемый текст, доступ к буферу обмена и т. д.
Я уже пробовал:

Код: Выделить всё

settings.windowless_rendering_enabled = true;
settings.command_line_args_disabled = true;
cmd->AppendSwitch("disable-dev-tools");
cmd->AppendSwitch("disable-extensions");
cmd->AppendSwitch("no-sandbox");
cmd->AppendSwitch("disable-popup-blocking");
И в моем подклассе CefClient (

Код: Выделить всё

MiniClient
), я занимаюсь: Несмотря на это, новые всплывающие окна по-прежнему иногда открываются (пустое окно), а DevTools иногда обходит обработчик.

Чего я хочу:
Я хочу, чтобы мой экземпляр CEF вел себя как встроенный пользовательский интерфейс движок (для моей программы запуска игр), совсем не похожий на браузер —

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

«CEF должен вести себя как изолированный WebView – совершенно неинтерактивный за пределами логики пользовательского интерфейса моего приложения».


Что я пробовал:
  • Переопределить все обработчики (

    Код: Выделить всё

    CefLifeSpanHandler
    , CefRequestHandler, CefContextMenuHandler и т. д.)
  • Возврат true в OnBeforePopup
  • Использование windowInfo.SetAsWindowless(nullptr)
  • Отключение всего с помощью OnBeforeCommandLineProcessing
Тем не менее, при некоторых условиях могут появляться всплывающие окна или открываться DevTools.

Вопросы:
  • Есть ли надежный способ отключить все поведение на уровне браузера (всплывающее окно, DevTools, контекстные меню и т. д.) в CEF 141?
  • Могу ли я каким-то образом включить или использовать chrome_runtime, чтобы получить более строгий контроль над созданием всплывающих окон и DevTools?
  • Можно ли скомпилировать CEF в настоящем режиме «только для пользовательского интерфейса» (без chrome://, нет возможностей внутреннего браузера)?
Любое руководство или минимальный пример, показывающий, как превратить CEF в чистый модуль рендеринга, будет очень полезно.

Подробнее здесь: https://stackoverflow.com/questions/798 ... om-game-la
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»