Domanda

Ho un'applicazione VB6 che crea un'istanza di Internet Explorer e implementa il trascinamento per questa istanza. Sto utilizzando l'evento BeforeNavigate2 in modo che quando l'utente rilascia un file o una cartella in Explorer, l'evento restituirà il percorso.

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

Funziona benissimo con Internet Explorer 6. Tuttavia, non funziona correttamente con Windows Internet Explorer 7. Quando rilascia un file funziona, ma quando rilascia una cartella apre semplicemente la cartella e non genera l'evento.

Cosa è cambiato in IE7? C'è qualche impostazione? C'è qualche problema di sicurezza?

Grazie

È stato utile?

Soluzione

IE6 aveva quello che era noto come "Shell Integration", che sostanzialmente significa che iexplore.exe ed explorer.exe hanno fatto la stessa cosa, che era aprire un frame comune che poteva ospitare una pagina web o una cartella shell.

Per IE7, questa integrazione è stata rimossa per una serie di motivi tecnici, tra cui la protezione IE in modalità protetta feature e il desiderio di spedire facilmente IE7 di livello inferiore a Windows XP e Windows Vista.

Quindi, per rispondere alla tua domanda, sì, qualcosa è cambiato in IE7. Se si tenta di accedere a un percorso di file locale, praticamente tramite qualsiasi meccanismo, interrompe la navigazione e lo delega all'istanza in esecuzione della shell explorer.exe. Non è possibile ripristinare il comportamento precedente.

Se hai bisogno che funzioni, dovresti considerare di scrivere un'estensione Shell e non un'estensione Browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top