Pergunta

Eu tenho um aplicativo VB6 que cria uma instância do Internet Explorer e implementos arrastar e soltar para esta instância. Eu estou usando o evento BeforeNavigate2 para que quando o usuário solta um arquivo ou uma pasta no Explorer, o evento irá retornar o caminho.

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

Ele funciona muito bem com o Internet Explorer 6. No entanto, ele não funciona corretamente com o Windows Internet Explorer 7. Quando eu soltar um arquivo que funciona, mas quando eu deixar cair uma pasta que só abre a pasta e não acionar o evento.

O que mudou no IE7? Existe alguma definição? Existe algum problema de segurança?

Graças

Foi útil?

Solução

IE6 tinha o que era conhecido como "Integração Shell", que basicamente significa que iexplore.exe e explorer.exe fez a mesma coisa, que foi aberto um quadro comum que poderia acolher quer uma página web ou uma pasta shell.

Para o IE7, essa integração foi removido para um número de razões técnicas, entre eles, sendo o protegido de segurança de modo IE recurso eo desejo de facilmente enviar IE7 nível inferior ao Windows XP, bem como o Windows Vista.

Assim, para responder sua pergunta, sim, algo mudou no IE7. Se você tentar navegar para um caminho de arquivo local, praticamente através de qualquer mecanismo, que interrompe a navegação e delegados-se para a instância em execução do shell explorer.exe. Não há definição para reverter para o comportamento anterior.

Se você precisa disso para trabalho, você deve considerar escrever uma extensão de Shell e não uma extensão do navegador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top