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
では、&検索ができません。常にコンボボックスで選択されたものだけが
検索され、しかも無限に検索をします。
対処法を教えていただけないでしょうか?
アクアと申します。
微力ながらお手伝い申し上げます。
見ると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
こんな感じです。
ご質問の意図に沿えていれば良いのですが、いかがでしょうか?
アクアさんも指摘されてる通り板違い
続きは下のどっちかでやってね
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi
http://madia.world.coocan.jp/cgi-bin/vbnet/wwwlng.cgi
ちゃんとそれぞれにリンクも貼っといてね
ちなみにGoogle検索するなら、検索文字列をエンコードして直接URL作成するって方法もあるよ
当たり前だけどこっちのが早い
マルチ見っけたからリンク
http://oshiete1.goo.ne.jp/qa3650198.html
この位自分でやって欲しいんだけどね
ツイート | ![]() |