Как преобразовать IHTMLImgElement в изображение

Я автоматизирую Internet Explorer, используя SHDocVW.dll и MSHTML с C#, и хочу сохранить изображение со страницы на диск (в формате JPEG).

Я не могу использовать класс WebClient для загрузки изображения; если я это сделаю, я в конечном итоге загружу страницу входа на сайт. Я также не могу распечатать экран, потому что браузер должен оставаться невидимым во время этого процесса, работающего в фоновом режиме.

Я попытался сделать следующее:

IHTMLImgElement imgElement = ...;
IHTMLControlRange imgRange = ...;

imgRange.add(imgElement as IHTMLControlElement);
imgRange.execCommand( "copy", false, null );

Это ничего не делает. Я не могу извлечь что-либо из буфера обмена. Каждое решение, которое я нашел, не работало для меня.


person Cphrreiuslo    schedule 14.05.2015    source источник
comment
Я изменил свой подход. Теперь я отслеживаю папку временных файлов Internet Explorer, поэтому я знаю, когда создается новый файл изображения. Потом просто копирую куда хочу.   -  person Cphrreiuslo    schedule 29.10.2015


Ответы (1)


В вашем подходе к веб-клиенту, вероятно, отсутствуют файлы cookie... см. Как мне войти на сайт с помощью WebClient? для примера, который обрабатывает файлы cookie.

ваш код выглядит нормально, за исключением того, что пользователь должен изменить настройку безопасности, чтобы разрешить доступ к буферу обмена. Если образ кэшируется на диске, вы можете копаться в кеше WinInet. после разбора страницы на наличие изображения.

person Sheng Jiang 蒋晟    schedule 06.06.2015
comment
На самом деле я не использую класс WebClient. Я использую SHDocVW.dll и MSHTML. - person Cphrreiuslo; 29.10.2015