Вопрос

У меня есть приложение 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?Есть ли какая-нибудь настройка?Есть ли какие-либо проблемы с безопасностью?

Спасибо

Это было полезно?

Решение

В IE6 было то, что было известно как "Интеграция с оболочкой", что в основном означает, что iexplore.exe и explorer.exe сделали то же самое, а именно открыли общий фрейм, в котором могла размещаться либо веб-страница, либо папка оболочки.

Для IE7 эта интеграция была удалена по ряду технических причин, среди которых защищенный режим IE security особенность и желание легко перенести IE7 с нижнего уровня на Windows XP, а также Windows Vista.

Итак, отвечая на ваш вопрос, да, что-то изменилось в IE7.Если вы пытаетесь перейти к локальному пути к файлу, практически с помощью любого механизма, это прерывает навигацию и делегирует ее запущенному экземпляру командной строки explorer.exe shell.Нет настройки для возврата к предыдущему поведению.

Если вам нужно, чтобы это работало, вам следует рассмотреть возможность написания расширения оболочки, а не расширения браузера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top