« 画面を拡大表示する | トップページ | 文字列中の半角カタカナを全角カタカナに置換する »

ShellオブジェクトからHTMLDocumentを取得し,IEの表示しているURLを取得する

Getieurl

外部で起動したIEの表示しているWebページのURLをリストボックスに列挙します。

ShellオブジェクトにはExplorerとInternetExplorerがあるので,Documentの型をチェックして区別しています。型のチェックをTypeNameで行うサンプルもありますが,いつも同じ型名を返すとは限らず,安定して動作しません。ここはmshtmlを参照設定して型のチェックをして方がよいと思います。(DLLが作成されてしまうのですが...)

Imports System.Runtime.InteropServices
Imports mshtml

Public Class Form1
    Dim WithEvents ListBox1 As New ListBox
    Dim WithEvents Timer1 As New Timer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'ListBox1
        ListBox1.Dock = DockStyle.Fill
        ListBox1.IntegralHeight = False
        'From1
        Me.Text = "GetIEURL"
        Me.Controls.Add(ListBox1)
        'Timer1
        Timer1.Interval = 1000
        Timer1.Enabled = True
    End Sub

    Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Shell As Object = Nothing 'Shellオブジェクト(COMオブジェクト)
        Dim Document As Object = Nothing 'IWebDocument2オブジェクト(COMオブジェクト)
        Dim State As WebBrowserReadyState
        ListBox1.Items.Clear()
        Try
            Shell = CreateObject("Shell.Application").Windows 'Shellオブジェクトを取得
            For Each Obj As Object In Shell
                Try
                    State = CType(Obj.ReadyState, Integer) 'オブジェクトがアクセス可能かどうか調べる
                    If State >= WebBrowserReadyState.Interactive Then
                        Document = Obj.document
                        If TypeOf Document Is mshtml.HTMLDocument Then 'IEだけ
                            ListBox1.Items.Add(Obj.document.url)
                        End If
                    End If
                Catch ex As Exception
                Finally
                    If Not Document Is Nothing AndAlso Marshal.IsComObject(Document) Then
                        Marshal.ReleaseComObject(Document) 'COMオブジェクトを解放
                    End If
                End Try
            Next
        Catch ex As Exception
        Finally
            If Not Shell Is Nothing AndAlso Marshal.IsComObject(Shell) Then
                Marshal.ReleaseComObject(Shell) 'COMオブジェクトを解放
            End If
        End Try
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Me.Timer1.Enabled = False
        Me.Timer1.Dispose()
        Me.ListBox1.Dispose()
    End Sub

End Class

|

« 画面を拡大表示する | トップページ | 文字列中の半角カタカナを全角カタカナに置換する »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ShellオブジェクトからHTMLDocumentを取得し,IEの表示しているURLを取得する:

« 画面を拡大表示する | トップページ | 文字列中の半角カタカナを全角カタカナに置換する »