WebBrowser Копировать изображение в буфер обмена - PullRequest
3 голосов
/ 30 сентября 2010

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

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

Ответы [ 2 ]

9 голосов
/ 30 сентября 2010

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

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);
  }
}
1 голос
/ 16 сентября 2014

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

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);
}
...