Элемент управления веб-браузером в VB.NET 4.5 не имеет многих весьма полезных функций, особенно если говорить об обработке новых окон. Это то, что я расскажу в этом посте, но вместо использования обычного элемента управления веб-браузером я буду использовать элемент управления AxWebBrowser, который больше расширяет эту функциональность.

Об управлении веб-браузером я расскажу в другом посте.

При создании браузера в приложении может возникнуть необходимость контролировать новые окна, которые могут генерировать некоторые веб-сайты, если у вас есть доступ для изменения исходного кода веб-страницы, тогда с ним может быть проще работать, но если у вас его нет, то это то, что вам придется обрабатывать в приложении, которое вы создаете. Для этих целей AxWebBrowser предоставляет newwindow2 и newwindow3. В этом случае я буду смотреть на новое окно3, так как новое окно2 требует еще пары шагов.

Сначала добавьте элемент управления в свой проект, щелкнув правой кнопкой мыши на панели инструментов и выбрав «Выбрать элементы…».

Откроется новое диалоговое окно, в котором вы ищете Microsoft Web Browser на вкладке COM-компоненты.

Это добавит элемент управления AxWebBrowser на панель инструментов, он имеет цветной значок мира. Этот элемент управления практически не задокументирован, и похоже, что он не используется широко, поэтому найдено мало информации.

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

Наиболее важной строкой здесь является e.cancel, поскольку установка для нее значения True отменит создание экземпляра Internet Explorer, в котором будет загружаться сайт. Строки ниже, которые просто добавляются для обработки нового окна, которое будет создано, где создается новый экземпляр формы и имеет родительский MDI, установленный так, чтобы он загружался, как и остальные окна в этом приложении.

loadURL — это функция, которую я создал в этой форме, чтобы элемент управления AxWebBrowser загружал веб-страницу, а затем проверял, загружен ли сайт или нет, поскольку инструмент создается для автоматизации определенных задач, поэтому ему необходимо определить, загрузился ли сайт или была возвращена ошибка.

Для этого элемента управления не хватает нескольких вещей: cangoback и cangoforward, которые немного раздражают, и мне еще предстоит найти способ определить, можно ли выполнять эти команды или нет, чтобы я мог включать или отключать соответствующие кнопки на панель инструментов.

Документ, загруженный в элемент управления, недоступен, что означает, что нет простого способа автоматизировать манипуляции с сайтом, например, возможность заполнять формы и нажимать кнопки, что является проблемой для моего случая. Обходной путь заключается в передаче свойства Document в переменную типа mshtml.HTMLDocument, но это позволяет вам только проверять содержимое и заполнять формы, но не может вызывать события и нажимать кнопки. , за исключением того факта, что вы изменяете данные в переменной, а не непосредственно на загруженном сайте в элементе управления AxWebBrowser. Так что я все еще пытаюсь понять.