2010-04-02 7 views

Répondre

12

C'est la seule façon que j'ai pu trouver. Curieux si quelqu'un d'autre a un meilleur moyen.

Copié de CodeProject

Vous devez ajouter une référence à Microsoft.mshtml et bien sûr attendre le document pour terminer le chargement. Cela permettra d'enregistrer les images chargées dans un composant System.Windows.Forms.WebBrowser webBrowser1 - même celles que vous ne voulez pas.


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

salut ... merci pour la réponse, je espère juste que quelqu'un va trouver une autre solution, comme je ne peux vraiment pas utiliser le presse-papiers comme ça ... – lebhero

+0

bien si le presse-papiers est hors limites, puis d'autres que de passer par le cache, la seule autre façon peut être de télécharger à nouveau l'image. Mais laisse voir ce que les autres trouvent – Asher

+1

Très utile. Peut vouloir ajouter la possibilité d'enregistrer et de restaurer les anciennes données du presse-papiers. 'var clipboardData = Clipboard.GetDataObject();' avant 'foreach' et' Clipboard.SetDataObject (clipboardData); 'après' foreach'. – iCantSeeSharp