Pregunta

Tengo una aplicación VB6 que crea una instancia de Internet Explorer e implementa arrastrar y soltar para esta instancia. Estoy usando el evento BeforeNavigate2 para que cuando el usuario suelte un archivo o una carpeta en el explorador, el evento devuelva la ruta.

......
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

Funciona muy bien con Internet Explorer 6. Sin embargo, no funciona correctamente con Windows Internet Explorer 7. Cuando suelto un archivo funciona, pero cuando suelto una carpeta simplemente abre la carpeta y no activa el evento.

¿Qué ha cambiado en IE7? ¿Hay alguna configuración? ¿Hay algún problema de seguridad?

Gracias

¿Fue útil?

Solución

IE6 tenía lo que se conocía como "Integración de Shell", lo que básicamente significa que iexplore.exe y explorer.exe hicieron lo mismo, que era abrir un marco común que podía alojar una página web o una carpeta de shell.

Para IE7, esta integración se eliminó por varias razones técnicas, entre ellas la seguridad de IE en modo protegido característica y el deseo de enviar fácilmente IE7 de nivel inferior a Windows XP y Windows Vista.

Entonces, para responder a su pregunta, sí, algo cambió en IE7. Si intenta navegar a una ruta de archivo local, prácticamente a través de cualquier mecanismo, aborta la navegación y la delega a la instancia en ejecución del shell explorer.exe. No hay configuración para volver al comportamiento anterior.

Si necesita que esto funcione, debería considerar escribir una extensión de Shell y no una extensión del navegador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top