VBA, WebBrowser. Открывать ссылки в стандратном браузере системы
Имеется MS Access и формуляр с элементом управления WebBrowser. WebBrowser отображает страницу, которая содежит ссылки с атрибутом открытия в новом окне (target="_blank"). При клике на эти ссылки открывается старый Internet Explorer и страница выглядит ужасно, так как браузер устаревший и многого не поддерживает. Как сделать так, что бы при кликах по ссылкам открывался стандартный браузер системы?
Замечу, что элемент управления уже эмулирует Edge (FEATURE_BROWSER_EMULATION/msaccess.exe=99999), но ссылки все равно открываются в Internet Explorer.
Ответы (1 шт):
Я нашел одно рабочее решение сам и хочу поделиться им с вами. В проект добавил ссылку на "Microsoft HTML Object Library" (mshtml.tlb). Код достаточно ясный
Option Compare Database
Option Explicit
Private Declare Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hWnd As Long, _
ByVal Operation As String, _
ByVal Filename As String, _
Optional ByVal Parameters As String, _
Optional ByVal Directory As String, _
Optional ByVal WindowStyle As Long = vbMinimizedFocus _
) As Long
Dim WithEvents myWB As WebBrowser_V1 ' alternate interface exposing additional events
Private Sub Befehl1_Click()
myWB.Navigate "https://my_website.com"
End Sub
Private Sub Form_Load()
Set myWB = WebBrowser0.Object ' Ok, point myWB to alternaticve interface of WebBrowser1
End Sub
Private Sub myWB_NewWindow(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Processed As Boolean)
Dim startsWith As Boolean
startsWith = LCase$(Left(URL, 8)) = "https://" Or LCase$(Left(URL, 7)) = "http://"
If startsWith Then
OpenURL (URL)
Processed = True
End If
End Sub
Sub OpenURL(URL As String)
' Open URL in the default web browser
Dim lSuccess As Long
lSuccess = ShellExecute(0, "Open", URL)
End Sub