WebBrowserでgoogle検索するには?


denguru  2008-01-04 23:52:03  No: 100017

WebBrowserを使ってgoogle検索をVBで作ったブラウザ上で行いたいです。
具体的には、
「ComboBoxで選択した値」と「TextBox」で書き込んだキーワードを
&検索したいのですが

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

        WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text
        WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = ComboBox1.SelectedItem
        WebBrowser1.Document.Forms(0).InvokeMember("submit")
    End Sub

では、&検索ができません。常にコンボボックスで選択されたものだけが
検索され、しかも無限に検索をします。
対処法を教えていただけないでしょうか?


アクア  URL  2008-01-05 14:41:06  No: 100018

アクアと申します。
微力ながらお手伝い申し上げます。

見るとVisual Basic 6.0以前 ではないような気がしますが…
ですのでVisual Basic 2005としてお手伝いいたします。

フォームには
・WebBrowserコントロール
・TextBoxコントロール
・ComboBoxコントロール
が配置されていると思います。

ご提示されている内容でDocumentCompletedイベントのプロシージャ内に記述されてあるのは、
WebBrowserのページが更新がなされる度に、そのプロシージャ内の命令が実行されるようになっています。
したがって、
WebBrowser1.Document.Forms(0).InvokeMember("submit")
の命令文により検索が実行され、更新されると再度このプロシージャの命令が実行されるためにループ状態になってしまいます。
少なくともこの1文はこのプロシージャ以外に記述する必要があります。

さらに…
Googleの検索ページのテキストボックスへ値を書き込む命令文
WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text
WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = ComboBox1.SelectedItem
では、
確かに、TextBox1の文字がGoogleページのテキストボックスに渡されてますが、
2行目の所の命令文により上書きされてしまってます。
したがって、この2行を一つにまとめ、
WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text & " " & ComboBox1.SelectedItem.ToString()
という様にしてしまいましょう。

そこで、以下のようにプログラムに変更を加えます。

上記のコントロール以外にButtonコントロールを配置してください。
Buttonコントロールのプロパティは仮に
Name     | Button1
Enabled  | False
Text     | 移動
としておきます。

以下がコードです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click

    ' Google検索ページのテキストボックスに検索する値を放り込む。
    WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text + "  " + ComboBox1.SelectedItem.ToString()
    ' 検索の実行
    WebBrowser1.Document.Forms(0).InvokeMember("submit")

End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted
    ' ページが表示されたので、Button1を使用可能にする。
    Button1.Enabled = True

End Sub

こんな感じです。

ご質問の意図に沿えていれば良いのですが、いかがでしょうか?


lol  2008-01-05 15:58:42  No: 100019

アクアさんも指摘されてる通り板違い
続きは下のどっちかでやってね
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi
http://madia.world.coocan.jp/cgi-bin/vbnet/wwwlng.cgi

ちゃんとそれぞれにリンクも貼っといてね

ちなみにGoogle検索するなら、検索文字列をエンコードして直接URL作成するって方法もあるよ
当たり前だけどこっちのが早い


lol  2008-01-06 03:32:49  No: 100020

マルチ見っけたからリンク
http://oshiete1.goo.ne.jp/qa3650198.html

この位自分でやって欲しいんだけどね


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

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






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