tro2t Ответов: 2

Предотвратить блокировку iwebbrowser2?


Мое приложение использует элемент управления IWebBrowser2.
Если вы закроете контекстное меню (например, контекстное меню заголовка панели), щелкнув веб-элемент управления, он зависнет на текущей странице.
Вы больше не можете перейти на любую другую веб-страницу без перезапуска приложения.

Что я уже пробовал:

Вызов членов m_browser, включая Stop() и Quit (), перед переходом на новую страницу.
Вызов ExecWB с различными идентификаторами команд

Richard MacCutchan

А ваш вопрос-что?

tro2t

Как я могу предотвратить блокировку IWebBrowser2? Или вырвать его из запертого состояния?

Richard MacCutchan

Сначала вам нужно выяснить, что происходит и почему он запирается. Здесь никто не может догадаться, что делает ваша программа.

2 Ответов

Рейтинг:
2

Dave Kreskowiak

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

Я бы начал с просмотра страницы, загруженной элементом управления, прежде чем он заблокируется.


tro2t

Проблема, по-видимому, не связана с конкретной страницей. Это происходит для любой веб-страницы, локальной или удаленной.

Я думаю, что что-то пошло не так с ActiveX/COM. Все это в стороннем коде, поэтому, к сожалению, у меня нет доступа к исходному коду и я не вижу, как блокируется элемент управления.

Я говорю "заблокирован", но имею в виду, что он не может перейти на другие страницы. Вы все еще можете использовать полосы прокрутки для просмотра вверх и вниз веб-страницы. Только то, что вы привязаны к этой странице.

Кроме того, любые другие экземпляры веб-элемента управления также будут заблокированы на своей текущей странице, как только вы войдете в это состояние.

Dave Kreskowiak

Элемент управления WebBrowser просто оборачивает урезанный Internet Explorer, так что у вас также должны быть проблемы с IE. Какие-нибудь плагины в IE?

tro2t

IE работает нормально. Я отключил все плагины и все еще испытываю проблемы в своем приложении.

Dave Kreskowiak

Ну, тогда я не имею ни малейшего понятия.

Нет такой вещи, как модуль для "ActiveX/COM", который можно было бы сломать или исправить. Если бы COM не работал, Windows даже не работала бы.