社内で使用する業務用WebアプリをWindowsアプリケーションの中で扱えないかと思い,WebBrowserコントロールを使ってみました。
アカウント認証が必要なので,アカウント情報を自動入力して送信します。
まずはテキストボックスへの入力とボタンクリックのメソッドを用意。
'''
''' 指定のURLに接続します。
'''
''' URL
'''
Public Sub SetUrl(ByVal url As String)
webBrowser1.Navigate(url)
End Sub
'''
''' ウェブページ内のテキストボックスに文字列を入力します。
'''
''' 要素ID
''' 文字列
'''
Public Sub SetStringToTextBox(ByVal elementId As String, ByVal value As String)
Dim all As HtmlElementCollection = webBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName(elementId)
If forms.Count > 0 Then
forms(0).InnerText = value
End If
End Sub
'''
''' ウェブページ内のボタンをクリックします。
'''
''' 要素ID
'''
Public Sub ClickWebButton(ByVal elementId As String)
Dim all As HtmlElementCollection = webBrowser1.Document.All
Dim forms As HtmlElementCollection = all.GetElementsByName(elementId)
If forms.Count > 0 Then
forms(0).InvokeMember("click")
End If
End Sub
Webページの読み込みが完了した時点で自動入力して送信。
Private Sub webBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles webBrowser1.DocumentCompleted
SetStringToTextBox("Account", "myAccount")
SetStringToTextBox("Password", "myPassword")
ClickWebButton("Submit")
End Sub
うまくいったのはいいけど,別ウィンドウを表示する動作で認証が途切れてしまいました。 セッションのことまで考えるとなかなか単純にはいかないようです。 別ウィンドウでのセッション維持が不要なら,使えそうです。