Захват скриншота содержимого прокручиваемого окна

Мне нужно сделать снимок экрана области клиентского окна прокрутки, используя .NET. Мой первый приоритет - захват скриншотов на веб-странице. Но это может быть не единственный случай использования. Например, это может быть также текстовая область в Блокноте.

Некоторые приложения (FastStone Capture, PicPick) могут эмулировать поведение пользователя, чтобы достичь скрытой части прокручиваемой области и захватить ее. Я ищу что-то вроде этого или рекомендации для альтернативного способа получить тот же результат.

alt text

Ответы

Ответ 1

Я продолжил поиск и основал IECapt, - инструмент с открытым исходным кодом, который может использовать скриншот веб-страницы, используя IE внутри него. Он имеет версии C++ и .NET. Также есть аналог Qt/WebKit от того же автора: http://cutycapt.sourceforge.net.

Эти инструменты не являются прямым ответом на мой вопрос, но оба они решают исходную проблему на 90%.

Ответ 2

Вы можете получить окна для перенаправления WM_PAINT в буфер вне экрана с WM_PRINT и WM_PRINTCLIENT. Это лучше, чем скрипинг, потому что он гарантирует, что затененные части окна (за другими окнами) окрашены в любом случае. Если ваше целевое окно прокручивается, прокручивая позицию дочернего окна, должен применяться WM_PRINT. Просто, возможно, это также поможет вашему сценарию.