API для получения изменений области экрана?

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

Есть ли Windows API, который я могу подключить, чтобы получать уведомления об изменениях экрана?

Или мне нужно вручную написать что-то вроде this? :(

Я всегда полагал, что удаленный рабочий стол использует какой-то API для определения того, какие области экрана изменились, и отправляет обратно только эти изображения - это именно то поведение, которое мне нужно.


person CodeAndCats    schedule 11.11.2008    source источник


Ответы (5)


Я не думаю, что в Windows есть API, который может сказать вам, какие части экрана были изменены.

Один из возможных способов - использовать драйвер зеркала видео, как это использует UltraVNC.

person Otherside    schedule 14.11.2008


Казалось бы, вам придется немало поработать, чтобы обнаружить изменения экрана. Эта публикация на странице tech -archive.net, например. С его помощью вы можете скопировать в ОЗУ справочный экран, а затем взять другой и сравнить два. Вам решать, какое изменение является значимым. Материал аналогичен этой статье о захвате рабочего стола.

person bugmagnet    schedule 27.11.2008

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

person Lou Franco    schedule 11.11.2008

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

На данный момент я просто делаю это по таймеру, но планирую сделать это и после событий ввода.

Большое спасибо за ваши ссылки Boost - Я только что снова просмотрел эту ветку, так что скоро проверю их.

person CodeAndCats    schedule 01.12.2008