プロが教えるわが家の防犯対策術!

web browsaerコントロールにて簡易のブラウザを作成しましたが
いくつかのリンクをクリックしたときにIEが起動してしまいます。

IEではなくweb browser(同じウインドウ内)で表示させたいのですが
どのようにすれば良いのか全く解りません。

おわかりになられる方ご教授お願い致します。

A 回答 (2件)

こんにちは





>いくつかのリンクをクリックしたときにIEが起動してしまいます。
私も、以前同じ問題に直面しまいした、その時は解決できませんでしたが、ふとしたところでその問題について記載されたサイトを発見しました。
後で使おうと思い、自分用に少し手を加えたものですが、使用出来ると思います。

1.WebBrowserをプログラムから作成します。

2.TabControlをプログラムから作成します。

3.TabPageをプログラムから作成します。

4.全て配列にします。

5.WebBrowserはTabPageのコントロールにします。

6.新しいページが作成される前にイベントで察知して、次のインデックスのWebBrowserを次のインデックスのTabPageのコントロールにします。

7.URLも同じく移動させます。



サンプルです。フォームに何も貼り付けていない状態でコピペして実験してみてください。

Public Class Form1
Dim webbrowsers() As WebBrowser
Dim tbpge As TabControl
Dim tbpages() As TabPage
Private Sub f1() Handles MyBase.Shown
tbpge = New TabControl 'TabControlインスタンス
tbpge.Dock = DockStyle.Fill 'DockをFillにする
Me.Controls.Add(tbpge) 'フォームにAddする
ReDim webbrowsers(0) '配列のサイズ
ReDim tbpages(0) '配列のサイズ
webbrowsers(0) = New WebBrowser 'webbrowsersのインスタンス
tbpages(0) = New TabPage 'tbpgesのインスタンス
tbpge.Controls.Add(tbpages(0)) 'tbpge(0)をTabControlにAddする
webbrowsers(0).Dock = DockStyle.Fill 'webbrowsersのDockをFillにする
'新しいWindowが開く前に発生するイベント
AddHandler webbrowsers(0).NewWindow, AddressOf WEB_NEW
tbpages(0).Controls.Add(webbrowsers(0))
webbrowsers(0).Navigate("http://www.ameba.jp/") 'アメーバピグ
tbpages(0).Text = "http://www.ameba.jp/" 'アメーバピグ
End Sub
'新しいWindowが開く前に発生するイベント
Private Sub WEB_NEW(sender As Object, e As System.ComponentModel.CancelEventArgs)
Dim c As Integer = webbrowsers.Length '現在のTabの数
Dim Href As String = CType(sender, WebBrowser).Document.ActiveElement.GetAttribute("href") '移動先のURL
e.Cancel = True '新しいウインドウの生成をキャンセルする
'webbrowsersとtbpagesのインデックスを一つ増やす
ReDim Preserve webbrowsers(c)
ReDim Preserve tbpages(c)
webbrowsers(c) = New WebBrowser '新しいページを追加します
tbpages(c) = New TabPage '新しいページを追加します
webbrowsers(c).Dock = DockStyle.Fill 'DockをFillにする
'新しいWindowが開く前に発生するイベント
AddHandler webbrowsers(c).NewWindow, AddressOf WEB_NEW
tbpge.Controls.Add(tbpages(c)) 'TabPageをTabControlにAddする
tbpages(c).Controls.Add(webbrowsers(c)) 'WebBrowsers(c)をTabPages(c)Addする
tbpge.SelectedIndex = c '作成したtabPageをアクティブにする
webbrowsers(c).Navigate(Href) '新しいタブに表示されたWebBrowserコントロールの表示アドレスを、Hrefに変更する
tbpages(c).Text = If(Href.Length > 24, Href.Substring(0, 21) & "...", Href) 'タブページのタイトルを変更
End Sub
End Class


ログインの操作が、少し難しいでしょうか?

頑張ってください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
何とかできました。
ありがとうございました。

お礼日時:2012/10/07 10:26

すいません、訂正です。




>ログインの操作が、少し難しいでしょうか?
アメーバピグのログインは、他の方のブログにメール送信するとき、最初の1回目は、再度ログインするみたいです。


下記のコードで実験しました。


Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
WebBrowser1.ScriptErrorsSuppressed = True
WebBrowser1.Navigate("http://www.ameba.jp/")
End Sub
Private Sub ログインToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ログインToolStripMenuItem.Click
Dim login As HtmlElement
WebBrowser1.Document.GetElementById("usr_name").InnerText = "ID"
WebBrowser1.Document.GetElementById("password").InnerText = "パスワード"

For Each login In WebBrowser1.Document.All
If login.GetAttribute("name") = "Submit" Then
login.InvokeMember("click")
Exit For
End If
Next
End Sub
End Class


ログインは特に問題がないようです。
失礼しました。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!