0

WinFormアプリケーションでは、WebBrowserコントロールとがありPictureBoxます。DocumentComplete以下のコードで画像を(後のwebbrowserコントロールから)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);

     }

画像は私のPCのpicturebox1に表示されますが、私の友人の画像には表示されません。別のWindowsXPでは、VS2008をインストールした後はうまく機能しました。したがって、IHTMLDocument2が正しく機能するには、WindowsUpdateが必要だと思います。

それはどのアップデートですか?または、インターネットから画像を再ダウンロードする必要がない、このコードの他の代替手段はありますか?

4

1 に答える 1

7

ここで利用可能な追加のファイル(dll?)をデプロイする必要があるようです。

最良のオプション(およびほとんどの人が行うこと)は、System.Net.WebClientなどを使用してソースをダウンロードし、WebClientを再度使用してイメージをダウンロードすることです。

HTMLのインターフェイスを使用する場合はIHTMLDocument2、このインターフェイスを含むファイルが含まれていますC:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll (32ビットWindowsを実行している場合はx86なし)。VS配置プロジェクトを使用している場合は、このファイルをプロジェクトに含めます(または、実行中のアプリケーションディレクトリに手動でコピーします)。

于 2011-08-28T03:57:17.963 に答える