- - PR -
AxWebBrowserコントロール表示について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-17 17:37
分類:[.NET 全般] いつも参考にさせて頂いてます。 現在VB2008の環境で、yahoo自動ログインのプログラムを作成しようとしています。 コードは以下の通りです。テキストボックスにID、パスワードを入力後自動ログインは成功しました。 Dim objeBrowser As New SHDocVw.InternetExplorer() Dim iCol As mshtml.IHTMLElementCollection Dim iEle As mshtml.IHTMLElement Dim sString As String Dim sID As String 'Yahoo! JAPAN ID Dim sPass As String 'パスワード sID = TextBox1.Text sPass = TextBox2.Text objeBrowser.Visible = True objeBrowser.Navigate("https://login.yahoo.co.jp/config/login_verify2?.src=ym", Nothing, Nothing, Nothing, Nothing) Do Loop Until Not objeBrowser.Busy Dim HTMLDoc As mshtml.HTMLDocument Do Loop Until Not objeBrowser.Busy HTMLDoc = objeBrowser.Document iCol = HTMLDoc.getElementsByTagName("input") 'Yahoo! JAPAN ID============================ For Each iEle In iCol If Not iEle.getAttribute("name") Is Nothing Then sString = iEle.getAttribute("name").ToString If sString = "login" Then iEle.setAttribute("value", sID) Exit For End If End If Next 'パスワード================================= For Each iEle In iCol If Not iEle.getAttribute("name") Is Nothing Then sString = iEle.getAttribute("name").ToString If sString = "passwd" Then iEle.setAttribute("value", sPass) Exit For End If End If Next 'ログイン==================================== For Each iEle In iCol If Not iEle.getAttribute("type") Is Nothing Then sString = iEle.getAttribute("type").ToString If sString = "image" Then sString = iEle.getAttribute("value").ToString If sString = "ログイン" Then iEle.click() Exit For End If End If End If Next Do Loop Until Not objeBrowser.Busy しかし上記のコードで実行すると、新規にIEを開いてログインしてしまいます。 AxWebBrowser1コントロール等を使用して、フォーム上に同様の処理を表示させたいのですがうまくいきません。 下記コードを実行しても入力前のログイン画面が表示されるのみです。 AxWebBrowser1.Navigate2("https://login.yahoo.co.jp/config/login_verify2?.src=ym", Nothing, Nothing, Nothing, Nothing) 新規にIEを開くことなく、webBowser上に処理後の画面を表示させるにはどうしたらいいでしょうか? VBをほとんど初心者で、大雑把な質問で申し訳ないのですが何卒ご教授の程よろしくお願いします。 | ||||
|
投稿日時: 2009-03-17 18:35
>しかし上記のコードで実行すると、新規にIEを開いてログインしてしまいます。
普通のWebBrowserコントロールではだめなんですか? | ||||
|
投稿日時: 2009-03-17 21:12
私の環境(Visual C# 2008 + Windows XP + IE7.0)でほぼ同じようなコードで試してみたが、おそらくおっしゃっているであろうことが再現できません。 (なお、私は VB2008 を知らないので、提示されたコードを使わず、自前で作ったコードで試しました。ID、パスワードの入力は省略しました。ただし "ログイン" の image を click するコードは再現したつもりです。) 私は、フォームの上に AxSHDocVw.AxWebBrowser という型の axWebBrowser1 というインスタンスを貼っていますが、フォーム内のこの axWebBrowser1 の中で画面が遷移します。IE のウィンドウが新たに現れることはありませんでした。 | ||||
|
投稿日時: 2009-03-18 10:33
IE(WebBrowswerコントロールを含む)を制御する場合、
OSがXPとVistaでも変わってきます。 OSは何でしょうか? | ||||
|
投稿日時: 2009-03-18 14:44
みなさまへ
すいません。解決しました。 AxWebBrowser1コントロールをフォーム起動時に生成させているにも関わらず、 下記のようなインスタンスを作成しまっていることに問題がありました。 Dim objeBrowser As New SHDocVw.InternetExplorer() objeBrowser⇒AxWebBrowser1と読み替えることで無事WebBrowswer上にyahooのログイン画面を表示させることができました。 以下がソースになります。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim iCol As mshtml.IHTMLElementCollection Dim iEle As mshtml.IHTMLElement Dim sString As String Dim sID As String 'Yahoo! JAPAN ID Dim sPass As String 'パスワード sID = TextBox1.Text sPass = TextBox2.Text AxWebBrowser1.Visible = True iCol = AxWebBrowser1.Document.getElementsByTagName("input") 'Yahoo! JAPAN ID============================ For Each iEle In iCol If Not iEle.getAttribute("name") Is Nothing Then sString = iEle.getAttribute("name").ToString If sString = "login" Then iEle.setAttribute("value", sID) Exit For End If End If Next 'パスワード================================= For Each iEle In iCol If Not iEle.getAttribute("name") Is Nothing Then sString = iEle.getAttribute("name").ToString If sString = "passwd" Then iEle.setAttribute("value", sPass) Exit For End If End If Next 'ログイン==================================== For Each iEle In iCol If Not iEle.getAttribute("type") Is Nothing Then sString = iEle.getAttribute("type").ToString If sString = "image" Then sString = iEle.getAttribute("value").ToString If sString = "ログイン" Then iEle.click() Exit For End If End If End If Next End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AxWebBrowser1.Navigate2("https://login.yahoo.co.jp/config/login_verify2?.src=ym", Nothing, Nothing, Nothing, Nothing) End Sub End Class お騒がせしてすいません。今後ともよろしくお願いします。 |
1