我有一个VB6应用程序,它创建了internet explorer的一个实例,并实现了该实例的拖放。我使用的是event 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中发生了什么变化?有什么设置吗?有什么安全问题吗?
谢谢
发布于 2009-06-23 17:20:54
IE6有所谓的“外壳集成”,这基本上意味着iexplore.exe和explorer.exe做了同样的事情,那就是打开一个公共框架,既可以托管网页,也可以托管外壳文件夹。
对于IE7来说,由于一些技术原因,这个集成被删除了,其中包括保护模式IE安全feature,以及希望将IE7轻松下发到Windows XP和Windows Vista。
所以,为了回答你的问题,是的,IE7中发生了一些变化。如果您试图通过任何机制导航到本地文件路径,它就会中止导航并将其委托给正在运行的explorer.exe shell实例。没有恢复到以前行为的设置。
如果你需要这样做,你应该考虑写一个Shell扩展,而不是浏览器扩展。
https://stackoverflow.com/questions/1033908
复制相似问题