• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DocumentCompletedが複数回発生する)

C#のwebbrowserでDocumentCompletedの複数回発生を判定する方法

このQ&Aのポイント
  • C#のwebbrowserを使用してDocumentCompletedイベントの複数回発生を判定する方法を知りたいです。
  • webbrowserを使ってアマゾンのサイトを開いた際に、DocumentCompletedイベントが7回以上発生します。同じURLが取得されるため、URLからの判断は無理です。
  • 完全にページを読み終わった時に、DocumentTextを使用してHTMLの情報を取得する単純なプログラムを作りたいです。どのように書けばいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

http://ironcat.info/tamabukuro/?p=93 イベントを処理するメソッド内で、senderのReadyStateプロパティを見ます。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowser.readystate(v=vs.80).aspx http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowserreadystate(v=vs.80).aspx readyState == WebbrowserReadyState.Completed が読み込み完了です。 この時のコントロールの状態は、 ・すべてのドキュメントがロードを完了している です。

macus
質問者

お礼

すごい!!! こんな方法があったんですね。 解決しました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>各、DocumentCompletedでURLを取得したのですが同じでしたので、 >URLからの判断は無理でした。 using System.Diagnostics; を追加して、Traceを使い下記のように確認してみました。  private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)  {   Trace.WriteLine("URL=>" + e.Url);  } 表示結果は… URL=>http://www.amazon.co.jp/aan/2009-09-09/static/amazon/iframeproxy-24.html#zjp&cbDAr2&iDAr2&r1 URL=>javascript:void(false) URL=>javascript:void(false) URL=>javascript:void(false) URL=>http://www.amazon.co.jp/ URL=>http://www.amazon.co.jp/aan/2009-09-09/static/amazon/iframeproxy-24.html#zjp&cbDAr7&iDAr7&r1 URL=>http://aax-fe.amazon-adsystem.com/s/iu3?d=amazon.co.jp&slot=navFooter&a2=0101e4fc779dd43db8bff8f845d250eff19b8d1eebebbb503b0bbba941b22eb8602f&old_oo=0&cb=1372636202364 となりましたが……。 # 実行するタイミングによっては一部URLが異なる…かも知れませんけどね。  if (webBrowser1.Url == e.Url)  {   // ここでDocumentTextを参照する。  } でいいのではないでしょうか? 他のURLはリンクされている画像とか外部サイトの広告とかと思われるので、DocumentText自体には影響しないと思われますけど……。 # javascript:void(false)についてはよく判りませんが…。

macus
質問者

お礼

ありがとうございます。 そんな方法で、URLを確認できるんですね。 DocumentCompletedの中で、messeagebox.show(url)で表示していたら、すべてhttp://www.amazon.co.jp/でした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [C#]webbrowserのstop()について

    C#のwebbrowserのstopはどういったことをしてくれるんでしょうか? ググると、一番わかりやすいのが 『保留中のナビゲーションをキャンセルし、バックグラウンド サウンドやアニメーションなどの動的なページ要素をすべて停止します。』 ウェブページをwebbrowserで読み込むと、いらないページ(広告ページなど)を読み込むので、 指定のページが読み込み終わったら、もう他のは読み込まないとしたいのですが、うまくいきません。 webbrowser1.Navigated("http://www.yahoo.co.jp") でアクセスして、 webBrowser1_DocumentCompleted のイベントの中に、 if (e.Url == "http://www.yahoo.co.jp"){ webbrowser1.stop();} と書いたのですが、それ以降も読み込んでいます。。。 ただ、これを書いたほうが確かにいつもより読み込みページ数が少なくなるような気がします。 調査の仕方としては、 webBrowser1_DocumentCompleted が発生した時のe.Urlと時間(DateTime.Now)を調査して、 http://www.yahoo.co.jpを読み込んだあとに、まだ続いて広告などを読み込んでしまいます。 textBox1.Text += e.Url.ToString() + "[" + DateTime.Now + "]\r\n"; というふうに書いて見ています。 狙いとしては、http://www.yahoo.co.jpが読み込み終わったら、webbrowserの残されている読み込みページを読まずに、終了して欲しいのです。 文書がわかりにくくて済みません。 ヒントでもいいので教えていただけると助かります。

  • 正しいWebBrowserの使い方(ループ判定)

    VB2008を使っています。WebBrowserのコンポーネントを使って ホームページにGET形式でパラメータを渡して画面のBODY部分を読み取る ものを作っているのですが、サーバーのレスポンスにもよりますが 1分間に20回で5分(100回程度)連続アクセスをするのですが、 以下のルーチンの場合何か不安を感じまして、 ネットでこれを使えばOKというものが無くて 確実に読み取る方法が知りたくて質問いたしました。 やはり、2つ目のイベントを用いる方が安心でしょうか? 正しいWebBrowserの使い方(ループ判定)をご存知の方教えてください。 '***** WebBrowser1.ReadyState ***** WebBrowser1.Navigate(URL) Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Or WebBrowser1.IsBusy = True Application.DoEvents() Loop data = WebBrowser1.DocumentText '***** DocumentCompletedイベントまでループ ***** public wait_flag as Boolean wait_flag = True WebBrowser1.Navigate(URL) Do While (WebBrowser1.IsBusy = True) Or (wait_flag = True) Application.DoEvents() Loop data = WebBrowser1.DocumentText '---- イベント ----- Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted wait_flag = False End Sub

  • WebBrowserにてCSVを取得したい

    WebBrowserにてCSVを取得したい vb.net(VS2008) にて、WebBrowserを利用して指定のURLからCSVをダウンロードしたいのですが、ダウンロードするダイアログまたはエクセルがWebBrowser内に表示されてしまいます。 単純に、WebBrowserに表示して、DocumentCompleted 時にDocumentとして取得したいのです。 もしくは、ファイル名を予め指定してダウンロードでも問題ありません HttpWebRequest,WebClientによる取得は、 SSLクライアント認証などの公開キーに基づく認証方式が必要なサイトのため、できませんでした。 ダイアログ、エクセルが起動せずに取得出来る方法がありましたら、教えていただけないでしょうか? よろしくお願いします。

  • 【C#】GeckoFXでの読み込み完了

    GeckoFX・Webkit.netなどのブラウザで、DocumentCompletedが複数発生してしまうページの読み込みが完了したことを検知する方法はないでしょうか? 標準のwebBrowserでは if ((sender as WebBrowser).ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete){} とすればよかったのですが、上記のブラウザコントロールにはReadyStateがないのです。 解決できる方がいましたら、どうぞよろしくお願いします。

  • C# 背景を赤にしてしまうブラウザを作りたい

    C#でブラウザを開発しています。 学生です。 授業で何らかのプログラムを作らなければいけないということでやってます。マクロは禁止だったり使っていい言語が制限されてる中で自分で決めたプログラムを組むという課題です。 画面上部にURLを入力するフォームがあり、 隣のボタン「webBrowser.Navigate(url.Text)」を押すと、下にあるwebBrowserにそのサイトが表示されるというどこまでもシンプルなものです。ジョークみたいなアプリなので利便性の追求は皆無です。 ゆいつの面白みとして、開いたサイトの背景が(無理なページもあるでしょうが)赤になってしまうというのを考えています。 CSSでのカラー指定のサイトはとりあえず無視していったんHTMLでカラー指定しているサイトのみを対象としています。 一度ウェブブラウザに表示して、 string html = webBrowser.Document.Body.InnerHtml; HTMLを変数に格納し html = html .Replace("<body background="green">", "<body background="red"></body>"); リプレイスで色を変えます。 ここまではできているのですが、リプレイスした後のHTMLをwebBrowserに表示する方法がみつかりません。ご存知の方いないでしょうか?

  • 同じ画像を複数回表示させる

    HTML内に同じ画像を複数回表示させる場合、それを一枚だけ表示させる場合と比べて サーバーやブラウザに掛かる負担は、HTMLコードと画像の表示回数になるのでしょうか、 それとも、HTMLコードと画像の一枚分だけなのでしょうか? つまり、一度ダウンロードした画像を使い回しできると判断されれば、 全く同じ画像を何回表示しようとも、その画像を再びダウンロードする必要はなく、 ブラウザに表示する処理にしても、負担は少ないと言えるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • amazonアフェリエイトで同じアカウントに複数のウェブサイトを登録する手順を教えてください。

    amazonアフェリエイトで同じアカウントに複数のウェブサイトを登録する手順を教えてください。 アマゾンには以下のように書いてあります。 11. 複数のURLを持っているのですが、そのすべてをプログラムに登録できますか? 同じアカウントに複数のWebサイトを登録することをお勧めします。 ここで、同じアカウントに複数のウェブサイトを登録をする方法を教えてください。 お願いいたします。

  • WebBrowserのURLプロパティについて

    質問です。 ある某サイトの画像取得するプログラムを作ってるのですが、 検索しても出てこないのでここで質問させて頂きます。 最初に[TextBox1] と[TextBox2]が二つあります。 そしてそのテキストボックスにはURLの ../585dDws/ ←等の文字列を入れて それをWebBrowserで取得して読み込みを行いたいのですが、 WebBrowser2.Navigate(New Uri("http://www.*****.jp" + TextBox1.Text + ":" + TextBox2.Text + "/index.html")) 及び WebBrowser2.url(New Uri の方も読み込みました。が無理です。 でButtonを押しても WebBrowser 内は真っ白で読み取ってくれません。 どの様にすれば詠み込んでくれるのでしょうか? 「+」と「&」等も変更してみましたが無理でした。

  • WebBrowserに映されたページのhtml文獲得方法

    WebBrowserでナビゲートしたページのHTML文(ソース)をtextボックスに表示させたいのですが、出来なくて困っています。 text1.Text = inet1.OpenURL (★)  ★=表示させたいURL という事まではわかったのですが、WebBrowser1のURLの引渡し方法がわかりません! 教えてください!!おねがいします。

  • PHPでHTMLソースから特定のURLを抽出したい

    PHPで外部サイトのHTMLソース内の特定のURLを取得するにはどうすればいいでしょうか? 具体的には楽天市場の個別商品ページのHTMLソースにあるレビューページのURLを抽出したいと思っています。 ttp://item.rakuten.co.jp/asagao/332/のHTMLソースから レビューページのURLのttp://review.rakuten.co.jp/item/1/229861_10000050/1.1/を取得するようなプログラムを作りたいと思っています。 自力で頑張ってみたもののPHP初心者のため、preg_matchや正規表現でお手上げ状態になってしましました。 プログラムのソースコードを教えていただけると助かります。 ご回答よろしくお願いします。

    • ベストアンサー
    • PHP
WTCX1800GC-W親機とつながらない
このQ&Aのポイント
  • WTCX1800GC-W親機との接続ができなくなりました。再設定を試しましたが、2.4GHzと5GHzのランプが点灯せず接続できません。
  • 製品名はWTC-X1800GC-Wで、2023年3月9日から接続できなくなりました。それまでは問題なく接続できていました。
  • 具体的なお困りごとの詳細や現在の状況は不明です。
回答を見る