Как запрограммировать автоматическое создание скриншота в FF, Chrome и Opera
Нужно написать программку с одной кнопкой. Открываем браузер (любой), открываем в нем какую-то страничку, кликаем по кнопке в программе. На выходе получаем файл со скриншотом длинной веб-страницы.
А-ля, как это реализовано в FastStone Capture.
Чтобы это реализовать, надо определить текущее положение видимой области относительно страницы и выполнить автоматическую прокрутку окна. Написать реализацию под IE получилось. А вот с FF, Chome и Opera — сложности.
Подскажите, каким образом можно определить полный размер окна со скролбоксом. Пытаюсь делать через GetScrollInfo. Для одних окон функция выдает нормальные значения (блокнот, проводник), для других выдает нули. В идеале мне необходимо получить размер web-страницы, загруженной в браузер, передав в функцию хендл окна браузера.
Или подскажите другой вариант реализации.
Заранее спасибо.
Не все йогурты программы одинаково полезны написаны. И поэтому не все используют WinAPI для создания объектов UI в своем окне, поэтому и GetScrollInfo работать будет не везде — вывод если у программы нет какого-то API для получения информации и она не использует общепринятый API который ее мог бы предоставить, получить ее будет крайне затруднительно.
Как вариант решения задачи — попробуйте эмулировать нажатия клавиш для перевода окна в полноэкранный режим а там с помощью сочетаний клавиш как-то организовать скроллинг. Контроль достижения конца страницы можно сделать сравнивая скриншоты (если новый не отличается от предидущего — конец страницы).
А вы уверены, что GetScrollInfo берете от нужного внутреннего окна? По идее в любом случае если компонент скролла стандартный — то его можно получить, но может причина в неправильной «переборке» компонентов окна?
Как альтернатива — «выдирать» адрес из браузера, загружать его внутри программы и «скринить» уже внутри. Но тут засада — выглядеть страница будет не так, как в целевом браузере.