2010-09-30 2 views
3

Я использую элемент управления WebBrowser и хочу скопировать конкретное изображение на веб-странице в буфер обмена. Я знаю, что я могу использовать метод WebBrowser.Document.ExecCommand для копирования выбранного в данный момент области страницы, но не может решить, как направить выделение, чтобы покрыть определенный элемент или область страницы HtmlElement.WebBrowser Скопировать изображение в буфер обмена

Любая помощь очень ценится!

ответ

7

Я не писал об этом, но нашел его некоторое время назад и думал, что это поможет вам.

http://www.codeproject.com/Messages/3206780/Re-Image-in-WebBrowser.aspx

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); 
    } 
} 
+3

Спасибо! Просто для будущих ссылок для тех, кто использует это, вам нужно добавить ссылку на Microsoft.mshtml в свой проект и добавить «using mshtml» в ваш файл класса. – JoeR

+0

@JoeR, спасибо за информацию, это довольно старо, и я не использовал код в то время, но я вспомнил, что он появился после прочтения вашего вопроса. – Justin

+0

удивительный, чувак !! – carck3r

0

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

string image_name = "temp.bmp"; 
IHTMLDocument2 document = (IHTMLDocument2)webBrowser1.Document.DomDocument; 
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)document.body).createControlRange(); 

imgRange.add(document.all.item(HTML_IMAGE_ID)); 
imgRange.execCommand("Copy"); 
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap)) 
{ 
     bmp.Save(image_name); 
} 
Смежные вопросы