Webbrowserコントロールについて

解決


安立  2003-02-20 09:23:37  No: 77168  IP: [192.*.*.*]

VB6.0SP5でWebbrowserコントロールを使って自分の巡回しているホームページの
リンク集みたいなツールを作っているのですがホームページを開いた時にそのページの
チェックボックスやテキストボックスを操作したいのですが方法を教えていただきたいです。
またボタンなどの押す操作を自動的にできるものでしょうか?
(具体的にはログインのページを開いてそのままログインする)

よろしくお願いいたします。

編集 削除
VBレスキュ−(花ちゃん)  2003-02-20 09:45:00  No: 77169  IP: [192.*.*.*]

少し前に(下の2/16)に同様の質問と回答がありますが?

編集 削除
安立  2003-02-20 10:24:52  No: 77170  IP: [192.*.*.*]

過去ログを良く調べなくて投稿してしまい申し訳ありません。
HTML上のチェックボックスを操作するにはの投稿を拝見しました。

input type="check"オブジェクトのcheckedプロパティに、Trueを代入すればOKです。
とあるのですがどのようにしてinput type="check"オブジェクトを操作するのかが
よくわかりません。

編集 削除
魔界の仮面弁士  2003-02-20 20:02:03  No: 77171  IP: [192.*.*.*]

WebBrowserのDocumentプロパティは、
「DHTMLのdocumentオブジェクト」を返しますので、
それを使って処理する事になります。
(従って、DHTMLに関する、ある程度の知識が要求されます)


とりあえず、サンプルを記述しておきます。

Option Explicit

Private Sub Text1_Change()
    On Error Resume Next
    WebBrowser1.Document.f.q.Value = Text1.Text
End Sub

Private Sub Check1_Click()
    On Error Resume Next
    If Check1.Value = vbChecked Then
        WebBrowser1.Document.f.lr(1).Checked = True
    Else
        WebBrowser1.Document.f.lr(0).Checked = True
    End If
End Sub

Private Sub Form_Load()
    Text1.Text = ""
    Text1.Enabled = False
    Check1.Enabled = False
    WebBrowser1.RegisterAsDropTarget = False
    WebBrowser1.Navigate2 "http://www.google.co.jp/"
    Check1.Caption = "ラジオボタン変更"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL)
    Text1.Enabled = True
    Check1.Enabled = True
End Sub


なお、「documentオブジェクト」や「input type="check"オブジェクト」の
仕様に関しては、以下を参照してください。

[DHTMLリファレンス] (IE4当時に訳された資料なので、少々古いです)
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpisdk/dhtml/references/dhtmlrefs.htm

[HTML and DHTML Reference] (こちらの情報は、適宜更新されています)
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/dhtml_node_entry.asp

編集 削除
安立  2003-02-21 08:59:41  No: 77172  IP: [192.*.*.*]

魔界の仮面弁士さん丁寧なご説明ありがとうございます。
DHTMLに関する知識はないので勉強してやってみます。

ありがとうございました。

編集 削除
安立  2003-02-21 13:32:00  No: 77173  IP: [192.*.*.*]

ありがとうございます。思ったとおりのことができるようになりました!
ただ一点だけできないことがありました。

inputなどのnameに".mail"みたいに.が入っているとどうすればよいかわかりません。
(ヤフーのログイン画面のチェックボックスなどがそうなのですが)

WebBrowser.Document.Forms(a)..persistent.Checked = True
(もちろんこれでは駄目ですが)
このような場合に何か方法はあるのでしょうか?
よろしくお願いします。

編集 削除
魔界の仮面弁士  2003-02-21 14:08:46  No: 77174  IP: [192.*.*.*]

documentオブジェクトのgetElementsByNameメソッドを使ってください。
また、その要素にid属性が付加されている場合は、documentオブジェクトの
getElementByIdメソッドを利用する事ができます。

nameもidも無い場合は、getElementsByTagNameメソッド
(あるいはallやchildNodesなど)を利用すると良いでしょう。

編集 削除
安立  2003-02-21 15:06:37  No: 77175  IP: [192.*.*.*]

魔界の仮面弁士さんありがとうございます。
getElementsByNameをつかってうまくいきました。

みなさんの様々な質問にお答えしているのはすごいとかしか言い様がありません(^^;)
私もまだプログラミングは始めたばっかりですがいろんな事をできるように
勉強したいと思います。

今回はほんとうにありがとうございました。

編集 削除