IHTMLDocument2 не работает везде - PullRequest
0 голосов
/ 28 августа 2011

В приложении winform у меня есть WebBrowser control и PictureBox.Я загружаю изображение (из элемента управления веб-браузера после DocumentComplete) в pictureBox1 с кодом ниже

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

         pictureBox1.Bitmap = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap);

     }

Изображение отображается в picturebox1 на моем компьютере, но не на компьютере моего друга.На другой Windows XP это работало хорошо после установки VS2008.Так что я думаю, что IHTMLDocument2 нуждается в обновлении Windows для правильной работы.

Какое это обновление?Или любая другая альтернатива этому коду, в которой мне не нужно повторно загружать изображение из Интернета?

1 Ответ

7 голосов
/ 28 августа 2011

Похоже, вам нужно развернуть дополнительные файлы (dlls?), Доступные Здесь.

Лучший вариант (и то, что делает большинство людей) - это использовать что-то вроде Система.Net.WebClient для загрузки исходного кода и снова используйте WebClient для загрузки изображения.

Если вы решили использовать интерфейс для HTML IHTMLDocument2, файл, содержащий этот интерфейс, находится в C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll (без x86, если вы используете 32-битную Windows).Включите этот файл в свой проект, если вы используете проект VS Deployment (или вручную скопируйте его в каталог запущенного приложения).

...