タイトル | : Re^3: VB.NETでIEのアドレス文字列につきまして |
記事No | : 3092 |
投稿日 | : 2006/02/11(Sat) 23:34 |
投稿者 | : YAS |
[OSのVer]:Windows [VBのVer]:VB.NET > 起動しているInternetExplorerの現在のURLを取得したいです。
それならばアドレスの文字列を取得するよりもシェルオブジェクトを取得して document.urlを参照した方がよいのではないでしょうか。 アドレス欄は非表示の場合もありますし,入力中の場合もあります。 以下のサンプルは開いているInternetExplorerのURLを列挙します。 参考になれば幸いです。
'ShellObject取得サンプル Imports System.Runtime.InteropServices
Public Class Form1 Dim WithEvents List As ListBox Dim WithEvents Timer As Timer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load List = New ListBox List.Dock = DockStyle.Fill List.IntegralHeight = False Me.Controls.Add(List) Timer = New Timer Timer.Interval = 1000 Timer.Enabled = True End Sub
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Timer.Tick Dim Shell As Object = Nothing 'Shellオブジェクト(COMオブジェクト) Dim Document As Object = Nothing 'IWebDocument2オブジェクト(COMオブジェクト) Dim State As READYSTATE List.Items.Clear() Try Shell = CreateObject("Shell.Application").Windows 'Shellオブジェクトを取得 For Each Obj As Object In Shell Try State = CType(Obj.ReadyState, Integer) 'アクセス可能かどうか調べる If State >= READYSTATE.INTERACTIVE Then Document = Obj.document Dim DocumentType As String = TypeName(Document) If DocumentType.Substring(0, 4) = "HTML" Then 'IEだけ List.Items.Add(Obj.document.url) End If End If Catch ex As Exception Debug.Print(ex.Message) Finally If Document IsNot Nothing AndAlso Marshal.IsComObject(Document) Then Marshal.ReleaseComObject(Document) 'COMオブジェクトを解放 End If End Try Next Catch ex As Exception Debug.Print(ex.Message) Finally If Shell IsNot 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.Timer.Enabled = False Me.Timer.Dispose() Me.List.Dispose() End Sub
End Class
Public Enum READYSTATE UNINITIALIZED = 0 LOADING = 1 LOADED = 2 INTERACTIVE = 3 COMPLETE = 4 End Enum
|