@wakzcva

Невидимый оверлей для записи видео/демке экрана/скриншотах?

пытаюсь написать оверлей на C++ и WINAPI, подобно тому, как это сделано в Action, чтобы он не был виден на демке экрана(рабочий стол)/скриншотах(рабочий стол)/видеозаписи экрана(рабочий стол).

Пытался что то нагуглить, но в основном советы:

- как сделать полупрозрачным данное окно;

- поверх всех окон данное окно(но оно всё равно видно на скринах/записи/демке);

- вообще его полностью скрыть(тоже мимо).

Не смог к сожалению найти то что мне необходимо:

1) Данное окно трудно захватить скриншотом/прогой для записи/демкой экрана, но при этом оно видно пользователю(мне).

При скриншоте/записи видео/демке экрана в месте где находится оверлей будет видно только что находится за оверлеем(тот же рабочий стол, часть окна браузера и т.п.).

Если в виде слоёв представить все графические интерфейсы программ, то нужно чтоб слой с моим окном был недоступен для всяких прог с захватом.

Скорее всего это как то по другому называется, но я хз. Поправьте.

2) В окне будет отображаться какая-то полезная информация(ну это то понятно как сделать)

Пример окна(оверлея) программы Action
action.jpg

Вот это окошко ножницами/скриншотом/демонстрацией экрана не захватишь. Пришлось включить отображение этой штуки в Action, им же записать видео и уже оттуда достать скрин.


Пытался что то наговнокодить

image.png
Но эта штука видна на записи/демке/скриншотах


P.S. В идеале, хотелось бы получить рабочий пример кода(можно и не на C++. Главное чтоб работало) или информацию о том, как это называется на английском, чтобы можно было легко найти то, что я описал.
  • Вопрос задан
  • 371 просмотр
Пригласить эксперта
Ответы на вопрос 2
@dima20155
you don't choose c++. It chooses you
Думаю, этот ответ может подсказать. Тут не про Action, а про Fraps, но, думаю, для начала этот подход подойдет.
https://superuser.com/questions/541467/overlay-get...
https://learn.microsoft.com/ru-ru/windows/win32/ap...

Если кратко, то overlay фрапса - это не отдельное окно, а картинка, нарисованная поверх исходного окна игры/программы. Соотвественно, фрапс для записи видео использует исходный кадр игры, а лишь после дорисовывает свой overlay.
Ответ написан
Комментировать
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Смотрите, чтобы окно было не видно записью экрана, оно должно быть "выше" этой самой записи. Например, рисоваться прямо в экранную память перед демонстрацией экрана. Такие штуки, действительно, зовутся overlay - hardware overlay. Что бы вы средствами winapi с вашим окном не делали, оно останется "ниже" захватчика экрана.

То, что вам нужно нельзя сделать на чистом winapi. Тут нужен именно DirectX. Придется ручками что-то там рисовать в поверхность. Гуглите "directx overlay".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы