« Vista+IE8 で、mhtmlファイルを開くと、ゴミファイルが残る。(その3) | トップページ | IE7/IE8で、window.open()で作った子ウィンドウを.focus()でアクティブにする。 »

2009年8月13日 (木)

IEの特定のタブをアクティブにする。

AppActivate()では、バックグラウンドのタブはアクティブにできません。

そこで、指定されたURLのタブをアクティブにします。

Function TabActivate(URL)
TabActivate=True
Set Shell=CreateObject("Shell.Application")
For Each ie In Shell.Windows()
  If ie.LocationURL=URL Then Exit For
Next
If IsEmpty(ie) Then
  TabActivate="Not Found 1"
  Exit Function
End If
Set wShell=CreateObject("WScript.Shell")
If AppActivate(wShell,ie) Then Exit Function
For Each ix In Shell.Windows()
  If ix.HWND=ie.HWND Then If AppActivate(wShell,ix) Then Exit For
Next
If IsEmpty(ix) Then
  TabActivate="Not Found 2"
  Exit Function
End If
For Each ix In Shell.Windows()
  If ix.HWND=ie.HWND Then
    wShell.SendKeys "^{tab}"
    WScript.Sleep 100
    ie.StatusText=CStr(ie.HWND)
    If ie.StatusText=CStr(ie.HWND) Then Exit Function
  End If
Next
TabActivate="Not Found 3"
End Function

Function AppActivate(wShell,ie)
AppActivate=True
If ie.Document.title<>"" Then If wShell.AppActivate(ie.Document.title) Then Exit Function
LocationURL=ie.LocationURL
If Left(LocationURL,8)="file:///" Then LocationURL=Replace(UnEscape(Mid(LocationURL,9)),"/","\")
If LocationURL="about:blank" Then LocationURL="空白のページ"
If wShell.AppActivate(LocationURL) Then Exit Function
AppActivate=False
End Function

« Vista+IE8 で、mhtmlファイルを開くと、ゴミファイルが残る。(その3) | トップページ | IE7/IE8で、window.open()で作った子ウィンドウを.focus()でアクティブにする。 »