VB.NET(Windows Apploication)から起動済みのIEでJavaScriptを実行する

φ(..)メモメモ
VB.NET(Windows Apploication)から起動済みのIEのObjectを取得し、Javascriptを実行するサンプル。

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim objIEWindow As Object = getIEWindowObject()
        If objIEWindow Is Nothing Then
            Exit Sub
        End If

        ' ここではalert()を実行しているが、表示しているページ内のJavaScriptも実行できる
        executeScript(objIEWindow, "alert('Hello!!');")

    End Sub

    Function executeScript(ByVal objIEWindow As Object, ByVal script As String) As Boolean
        'InvokeScript()が使えない(何故だ・・・orz)ので、Navigate()を使用する
        Return objIEWindow.Navigate("javascript:" & script)
    End Function

    Function getIEWindowObject() As Object
        'シェルのオブジェクトを作成する
        Dim objshell As Object = CreateObject("Shell.Application")
        Dim retObject As Object = Nothing

        'ウインドウの数だけまわす
        For Each objWindow As Object In objshell.windows
            'HTMLDocumentだったら(HTMLDocumentがあったらIEと判断してしまう)
            If TypeName(objWindow.Document) = "HTMLDocument" Then
                retObject = objWindow
                ' 1個見つかったらそれで終わりにする
                Exit For
            End If
        Next
        Return retObject
    End Function
End Class