Windows Internet Explorer 7のイベントBeforeNavigate2は発生しません
-
06-07-2019 - |
質問
インターネットエクスプローラーのインスタンスを作成し、このインスタンスのドラッグアンドドロップを実装するVB6アプリケーションがあります。ユーザーがエクスプローラーでファイルまたはフォルダーをドロップすると、イベントがパスを返すように、イベントBeforeNavigate2を使用しています。
......
Public WithEvents myIExplorer as new SHDocvW.InternetExplorer
......
Private Sub myIExplorer_BeforeNavigate2(ByVal pDisp As Object, URL As Variant,
Flags As Variant, TargetFrameName As Variant,
PostData As Variant, Headers As Variant, Cancel As Boolean)
If IsFile(URL) Then
'Process file
Else
'Process folder
End if
End Sub
Internet Explorer 6では問題なく動作します。ただし、Windows Internet Explorer 7では正常に動作しません。ファイルをドロップすると機能しますが、フォルダーをドロップすると、フォルダーが開くだけでイベントは発生しません。
IE7の変更点設定はありますか?セキュリティ上の問題はありますか?
ありがとう
解決
IE6には「シェル統合」と呼ばれるものがありました。これは基本的に、iexplore.exeとexplorer.exeが同じことを行い、Webページまたはシェルフォルダーのいずれかをホストできる共通のフレームを開くことを意味します。
IE7の場合、この統合はいくつかの技術的な理由で削除されました。その中には、保護モードIEセキュリティ機能およびIE7をWindows XPおよびWindows Vistaに簡単にダウンレベルで出荷したいという要望。
それで、あなたの質問に答えるために、はい、IE7で何かが変わりました。ほとんどすべてのメカニズムを介してローカルファイルパスに移動しようとすると、ナビゲーションが中止され、explorer.exeシェルの実行中のインスタンスに委任されます。以前の動作に戻す設定はありません。
これを機能させる必要がある場合は、ブラウザ拡張機能ではなくシェル拡張機能の作成を検討する必要があります。