Windows Internet Explorer 7中的事件BeforeNavigate2不会触发

时间:2009-06-23 17:10:11

标签: internet-explorer events vb6 drag-and-drop internet-explorer-7

我有一个VB6应用程序,它创建一个Internet Explorer的实例,并为此实例实现拖放。我正在使用事件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有什么变化?有什么设置吗?有安全问题吗?

由于

1 个答案:

答案 0 :(得分:1)

IE6有所谓的“Shell Integration”,这基本上意味着iexplore.exe和explorer.exe做了同样的事情,它打开了一个可以托管网页或shell文件夹的公共框架。

对于IE7,出于多种技术原因删除了这种集成,其中包括保护模式IE安全性feature以及轻松将IE7下载到Windows XP以及Windows Vista的愿望。

所以,回答你的问题,是的,IE7中有些变化。如果您尝试导航到本地文件路径,几乎通过任何机制,它会中止导航并将其委托给explorer.exe shell的运行实例。没有设置可以恢复到以前的行为。

如果需要这个,你应该考虑编写一个Shell扩展而不是浏览器扩展。