[[20130505165748]] 『WebBrowserコントロールでの画像表示・非表示切替』(田吾作) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『WebBrowserコントロールでの画像表示・非表示切替え』(田吾作)

 こんにちは、よろしくお願いいたします。

 エクセルは2002、ウィンドウズは来年サポートが切れるXP(SP3)です。

 未だにダイヤルアップ回線のため、IEで画像を表示すると通信が遅くなるため通常はIEで画像を表示しない
 ようにしています。
 時々画像を表示したいときがあるため下記のコードでIEの画像表示・非表示を切替えています。
 単に画像表示を切替えただけではIEでF5キーを押しても表示・非表示の切替が反映されないので、一旦IEを
 閉じてから再度IEを起動しURLを表示しなおすようにしています。
 このコードはうまく作動しています。

 今回の質問は、これをWebBrowserコントロールにも適用できないか、ということです。
 下記の
 '画像表示切替部分(開始)
 '画像表示切替部分(終了)
 の間のみのコードで画像表示切替を行ってもWebBrowserコントロール上でF5キーを押しても画像表示・非表示
 切替えがされずに以前の状態のままで再表示してしまいます。

 IEなら一度IEを閉じて再度IEを起動しなおすことで画像表示・非表示の切替えが反映されますが、WebBrowser
 コントロールでの反映のさせかたが分かりません。
 ご存知の方、ご教示お願いいたします。

 Sub test()
  Const navOpenInNewTab As Integer = &H800
  Const myreg As String = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images"
  Dim a As Variant
  Dim W As Object
  Dim myurl As String
  Dim myIE As Object
  Dim MyShell As Object
  Dim MyWindow As Object
  Dim urlary() As Variant
  Dim urlcnt As Integer
  Dim i As Integer
   urlcnt = -1
   Set MyShell = CreateObject("Shell.Application")
   'IEで表示されているURLを取得
   For Each MyWindow In MyShell.Windows
    If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then
       myurl = MyWindow.locationurl
       urlcnt = urlcnt + 1
       ReDim Preserve urlary(urlcnt)
       urlary(urlcnt) = myurl
       'ウィンドウを閉じる
       MyWindow.Quit
    End If
   Next
   Set MyShell = Nothing
 '画像表示切替部分(開始)
   Set W = CreateObject("WScript.Shell")
   '画像表示状態を取得
   a = W.RegRead(myreg)
   '画像表示状態を切替え
   If a = "yes" Then
      a = "no"
   Else
      a = "yes"
   End If
   W.RegWrite myreg, a
 '画像表示切替部分(終了)
   If urlcnt <> -1 Then
      'IEインスタンスを生成
      Set myIE = CreateObject("InternetExplorer.Application")
      With myIE
       .Visible = True 'IEウィンドウを表示
       For i = 0 To urlcnt
        'URL表示
        If i = 0 Then
           .Navigate urlary(i)
        Else
         .Navigate2 urlary(i), navOpenInNewTab
        End If
        While .Busy Or .ReadyState <> 4
        Wend
       Next i
      End With
      Set myIE = Nothing
   End If
 End Sub

 追記です。

 現状のWebBrowserコントロールのコードは下記のとおりです。

 'リストボックスに格納されたURLをWebBrowserコントロール表示
 Private Sub CommandButton1_Click()
  If Me.ListBox1.ListCount = 0 Or Me.ListBox1.ListIndex = -1 Then Exit Sub
  With Me.WebBrowser1
   .Navigate "about:blank"
   Do While .Busy Or .ReadyState <> 4
    DoEvents
   Loop
   .Navigate Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
   Do While .Busy Or .ReadyState <> 4
    DoEvents
   Loop
  End With
 End Sub

 '画像の表示・非表示切替え
 Private Sub CommandButton2_Click()
  Const myreg As String = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images"
  Dim a As Variant
  Dim W As Object
   Set W = CreateObject("WScript.Shell")
   '画像表示状態を取得
   a = W.RegRead(myreg)
   '画像表示状態を切替え
   If a = "yes" Then
      a = "no"
   Else
      a = "yes"
   End If
   W.RegWrite myreg, a
 End Sub

 (田吾作)

 ユーザーフォーム自体を一旦Unloadし、再Loadすることでうまく行きました。
 IEと同じことでした。お騒がせしました。

 標準モジュールに記述しておき、ユーザーフォームから呼び出して使っています。

 Function uf1saihyouji()
  Dim mylst As Variant
  Dim myurl As String
  Dim flg As Boolean
  Const myreg As String = "HKCU\Software\Microsoft\Internet Explorer\Main\Display Inline Images"
  Dim a As Variant
  Dim W As Object
   UserForm1.CommandButton6.Enabled = False
   flg = False
   With UserForm1.ListBox1
    If .ListCount <> 0 Then
      flg = True
      mylst = .List
      myindx = .ListIndex
    End If
   End With
   myurl = UserForm1.WebBrowser1.LocationURL
   Unload UserForm1

   '画像表示切替部分(開始)
   Set W = CreateObject("WScript.Shell")
   '画像表示状態を取得
   a = W.RegRead(myreg)
   '画像表示状態を切替え
   If a = "yes" Then
      a = "no"
   Else
      a = "yes"
   End If
   W.RegWrite myreg, a
   '画像表示切替部分(終了)

   UserForm1.Show 0
   If flg = True Then
      With UserForm1.ListBox1
       .List = mylst
       .ListIndex = myindx
      End With
   End If
   With UserForm1.WebBrowser1
    .Navigate myurl
    Do While .Busy Or .ReadyState <> 4
     DoEvents
    Loop
   End With
   UserForm1.CommandButton6.Enabled = True
 End Function

 (田吾作)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.