2010-04-02 34 views

Respuesta

12

Esta es la única forma que pude encontrar. Curioso si alguien más tiene una mejor manera.

Copiado de CodeProject

Hay que añadir una referencia a Microsoft.mshtml y por supuesto de espera para el documento termine de cargarse. Esto guardará las imágenes cargadas en un componente System.Windows.Forms.WebBrowser webBrowser1, incluso las que no desea.


IHTMLDocument2 doc = (IHTMLDocument2) webBrowser1.Document.DomDocument; 
IHTMLControlRange imgRange = (IHTMLControlRange) ((HTMLBody) doc.body).createControlRange(); 

foreach (IHTMLImgElement img in doc.images) 
{ 
    imgRange.add((IHTMLControlElement) img); 

    imgRange.execCommand("Copy", false, null); 

    using (Bitmap bmp = (Bitmap) Clipboard.GetDataObject().GetData(DataFormats.Bitmap)) 
    { 
    bmp.Save(@"C:\"+img.nameProp); 
    } 
} 
+0

... hola gracias por responder, Sólo espero que alguien va a venir con otra solución, ya que realmente no puede utilizar el portapapeles así ... – lebhero

+0

bien si el portapapeles está fuera de límites, a continuación, otra que pasar por la memoria caché, la única otra forma puede ser descargar la imagen nuevamente. Pero veamos qué otros vienen con – Asher

+1

Muy útil. Es posible que desee agregar la capacidad de guardar y restaurar los datos antiguos del portapapeles. 'var clipboardData = Clipboard.GetDataObject();' before 'foreach' y' Clipboard.SetDataObject (clipboardData); 'después de' foreach'. – iCantSeeSharp

Cuestiones relacionadas