WebBrowserで表示されるページ上の画像がロードされた時に発生するイベントは?

解決


ごめんねごめんね〜  2009-01-01 08:28:50  No: 145574

こんにちは。また質問させていただきます。
VB2008のExpress Editionで、WebBrowserを使用して、あるページを表示し、
そのページ上の画像を取得したいのですが、
画像が大きなサイズで、表示に時間がかかる場合、画像がロードされた時
に発生するイベントは何でしょうか?
もしかして、DocumentCompletedイベントは、画像のロードも完了してから
発生するのでしょうか?
(それならば問題はないのですが...)
どなたかご回答よろしくお願いします。


アクア  URL  2009-01-02 00:32:41  No: 145575

アクアと申します。どうぞ宜しくお願いします。

> DocumentCompletedイベントは、画像のロードも完了してから
> 発生するのでしょうか?

広義ではその通りです。
DocumentCompletedイベントは少なくともHTMLドキュメントの読込みが完了しないと発生しません。
という事はイベント発生時には画像のパスは取得できている事になります。
であれば、DocumentCompletedイベントの処理の中で、そのソースの中に含まれるパスとファイル名を抽出して幾らかの処理を行う事で、画像は取得できます。


ごめんねごめんね〜  2009-01-02 06:10:33  No: 145576

アクアさん、ご回答ありがとうございます。
通常であれば、htmlがロードされれば、imgタグのHtmlElementより
画像のURLが取得でき、System.Net.WebClient等で画像ファイルを
ダウンロードすることができますが、今回の場合、Webサーバで
制限をかけているため、WebClient等で直接ダウンロードができません。
そこで、画像がロードされ、キャッシュされたデータを取得できないかと、
そのタイミングを知りたいというわけです。


さんま  2009-01-07 01:07:38  No: 145577

例えば、Form上に別のダミーのWebBrowser2を(例えば非表示にして)用意し、
そこで元のWebBrowser1で表示されている画像のURLを取得し、
先ほどのダミーのWebBrowser2に表示し、以下のように読み込み完了を待って
次の処理を行えばよいのではないでしょうか?

WebBrowser2.Navigate(画像のURL)
System.Windows.Forms.Application.DoEvents()
Do While WebBrowser2.ReadyState <> WebBrowserReadyState.Complete
    System.Windows.Forms.Application.DoEvents()
Loop
'次の処理


ごめんねごめんね〜  2009-01-07 21:11:40  No: 145578

さんまさん、ご回答ありがとうございます。
上記を参考にしてみたいと思います。
今後ともよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加