API для получения изменений области экрана? - PullRequest
6 голосов
/ 11 ноября 2008

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

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

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

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

Ответы [ 5 ]

4 голосов
/ 14 ноября 2008

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

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

4 голосов
/ 15 ноября 2008

Я думаю, вы найдете некоторые подсказки здесь Screen Event Recorder DLL / Application , здесь About Hooks , а здесь Написание Mac Recorder / Player с использованием Win32 Journal Hooks

2 голосов
/ 27 ноября 2008

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

1 голос
/ 11 ноября 2008

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

0 голосов
/ 02 декабря 2008

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

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

Спасибо огромное за ваши ссылки. Повысьте - я только что снова посмотрел эту ветку, поэтому скоро проверю их.

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