rrud
@rrud

Как запрограммировать автоматическое создание скриншота в FF, Chrome и Opera

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

Чтобы это реализовать, надо определить текущее положение видимой области относительно страницы и выполнить автоматическую прокрутку окна. Написать реализацию под IE получилось. А вот с FF, Chome и Opera — сложности.

Подскажите, каким образом можно определить полный размер окна со скролбоксом. Пытаюсь делать через GetScrollInfo. Для одних окон функция выдает нормальные значения (блокнот, проводник), для других выдает нули. В идеале мне необходимо получить размер web-страницы, загруженной в браузер, передав в функцию хендл окна браузера.

Или подскажите другой вариант реализации.
Заранее спасибо.
  • Вопрос задан
  • 2726 просмотров
Пригласить эксперта
Ответы на вопрос 3
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Не все йогурты программы одинаково полезны написаны. И поэтому не все используют WinAPI для создания объектов UI в своем окне, поэтому и GetScrollInfo работать будет не везде — вывод если у программы нет какого-то API для получения информации и она не использует общепринятый API который ее мог бы предоставить, получить ее будет крайне затруднительно.
Ответ написан
GavriKos
@GavriKos
А вы уверены, что GetScrollInfo берете от нужного внутреннего окна? По идее в любом случае если компонент скролла стандартный — то его можно получить, но может причина в неправильной «переборке» компонентов окна?

Как альтернатива — «выдирать» адрес из браузера, загружать его внутри программы и «скринить» уже внутри. Но тут засада — выглядеть страница будет не так, как в целевом браузере.
Ответ написан
Комментировать
Kindman
@Kindman
А, кроме Интернет-ЭксплойтераВинВорда) какой-нибудь еще браузер поддерживает
СОМ-автоматизацию? То есть что-то типа того:
COM("InternetExplorer.Application");
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы