Windows 10: смотрите за полноэкранной формой внутри нового рабочего стола, созданного третьим приложением - PullRequest
1 голос
/ 09 марта 2019

У меня есть нормальный пример приложения (код это , но не является службой), который делает снимки экрана незащищенного активного рабочего стола, созданного приложением третьего лица.

Например:

enter image description here

Это третье приложение является "браузерным приложением", которое использует CEF для визуализации веб-сайтов.

Моя цель - открыть полноэкранную форму на переднем плане (охватывающую весь экран выше) и сделать снимок экрана с содержимым этой полноэкранной формы (3-е приложение).

Я искал какой-то намек на это и нашел подобные вопросы:

Второй найденный вопрос кажется более близким к решению моей проблемы (потому что в основном он использует похожий код). Я протестировал этот пример, оставленный автором, но я попал в ту же ситуацию, что и он.

Я также тестировал с использованием функции PrintWindow (для захвата только приложения 3-го), но это приводит к черному экрану (с содержанием хрома), потому что, вероятно, приложение 3-го использует CEF с аппаратное ускорение ресурс активен.

Например:

enter image description here


Все отлично работает в Windows XP, 7 (отключение темы Aero) - при ALPHABLEND = TRUE в полноэкранной форме. Тогда что можно сделать, чтобы работать и на Windows 10?

PS: я не хочу скрывать форму - сделать скриншот - снова показать форму.


EDIT:

Сегодня я заметил, что второй пример, найденный здесь в SO, работает, только если вызов ConfigMag() prodecure после подпрограммы, содержащей SetTheadDesktop(). Например:

if InputDesktopSelected then
      xGetScreenToBmp(idx)
    else if SelectDesktop(nil) then // result of SelectDesktop() is a routine that calls SetThreadDesktop 
    begin
      ConfigMag;
      xGetScreenToBmp(idx);
    end;
except
  on E: Exception do
    Writeln(E.ClassName, ': ', E.Message);
end;
Readln;

Уже, если я хочу периодически делать скриншоты, это будет неудачно, как сказал автор. Тогда моя проблема еще не была решена.

...