Захватить невидимый (заблокированный) виртуальный рабочий стол - PullRequest
0 голосов
/ 28 апреля 2020

Для автоматизации тестирования я хотел бы захватить виртуальный рабочий стол, который не виден. Он даже недоступен, поскольку показан защищенный рабочий стол.

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

Прежде чем я начну заново реализовывать составной менеджер: возможно ли получить DesktopWindow от dwm, и если да, то как мне заставить dwm заставить выполнить свою работу, даже если показан защищенный рабочий стол?

Если мне нужно прикусить пулю и мне нужно реализовать композицию самостоятельно, каков самый быстрый способ упорядочить все windows снизу до тома и передать их какой-нибудь образ?

Работает ли win10 capture api для невидимых рабочих столов?

1 Ответ

0 голосов
/ 29 апреля 2020

Чтобы ответить на последний вопрос: нет, новый API захвата win10 не помогает. Например, программа

https://github.com/robmikh/SimpleRecorder/tree/master/SimpleRecorder

не может захватить заблокированный рабочий стол и не может захватить sub windows.

. версия:

GDI32Util.getScreenshot (handle)

с дескриптором, являющимся окном рабочего стола (работает в режиме блокировки) или каким-либо другим дескриптором окна (работает в режиме блокировки, но пропускает подпрограмму windows ).

Таким образом, единственный вариант - пройти все windows в порядке z снизу вверх.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...