« Vistaで制限付きサイトを「Web ページ、HTML のみ (*.htm;*.html)」で保存すると、インターネットゾーンになる。 | トップページ | Vistaで、IE.Navigate()する。IEオブジェクトを乗り継ぐ。(その2) »

2009年7月28日 (火)

Vistaで、IE.Navigate()する。IEオブジェクトを乗り継ぐ。

(インターネットゾーンから)インターネットゾーンなどに、IE.Navigate()するとき、保護モード: 有効 -> 有効 の場合は、従来どおり。

Set ie=CreateObject("InternetExplorer.Application")
ie.Visible=True
ie.Navigate URL
Do While ie.Busy Or ie.ReadyState<>4
  WScript.Sleep 100
Loop
MsgBox ie.LocationURL

(インターネットゾーンから)マイコンピュータゾーンや信頼済みサイトなどに、IE.Navigate()するとき、保護モード: 有効 -> 無効 の場合は、IEオブジェクトが勝手に消滅して、別のIEオブジェクトが生成されるようです。
ただし、IEウィンドウは継承されるようなので、それを目印にすれば再発見できます。

Set Shell=CreateObject("Shell.Application")
Set ie=CreateObject("InternetExplorer.Application")
ie.Visible=True
hwnd=ie.HWND
LocationURL=ie.LocationURL
ie.Navigate URL
Do
  If TypeName(ie)<>"IWebBrowser2" Then
    For Each ie In Shell.Windows()
      If hwnd=ie.HWND Then Exit For
    Next
  End If
  If ie_LocationURL(ie)<>"" Then If LocationURL<>ie_LocationURL(ie) Then If Not ie.Busy Then If ie.ReadyState=4 Then Exit Do
  WScript.Sleep 100
Loop
MsgBox ie.LocationURL

Function ie_LocationURL(ie)
On Error Resume Next
ie_LocationURL=ie.LocationURL
End Function

« Vistaで制限付きサイトを「Web ページ、HTML のみ (*.htm;*.html)」で保存すると、インターネットゾーンになる。 | トップページ | Vistaで、IE.Navigate()する。IEオブジェクトを乗り継ぐ。(その2) »