Los clientes de control WebBrowser comparten la configuración global
Importante
La aplicación de escritorio Internet Explorer 11 está retirada y sin soporte a partir del 15 de junio de 2022 para determinadas versiones de Windows 10.
Todavía puede acceder a sitios antiguos heredados que requieren Internet Explorer con el modo Internet Explorer en Microsoft Edge. Obtenga más información.
La aplicación de escritorio Internet Explorer 11 se redirigirá progresivamente al explorador Microsoft Edge, más rápido y seguro. En última instancia, se deshabilitará a través de Windows Update. Deshabilite IE hoy.
En este artículo se proporcionan métodos para implementar la configuración global para compartir clientes de control WebBrowser reemplazando el método OnAmbientProperty de la clase basada en CWnd de hospedaje.
Versión del producto original: Internet Explorer
Número KB original: 183412
Síntomas
Todos los hosts del control WebBrowser comparten la misma configuración global de Internet.
Solución
Para la mayoría de la configuración global de Internet, no hay ningún método compatible para guardar automáticamente un conjunto de propiedades para cada host WebBrowser.
Sin embargo, determinadas opciones de descarga, como si se va a descargar ActiveX o no, se pueden invalidar y especificar por host.
Estado
Este comportamiento es una característica del diseño de la aplicación.
Más información
Como se documenta en el SDK de cliente de Internet (InetSDK), los hosts webBrowser pueden implementar la propiedad ambient de DISPID_AMBIENT_DLCONTROL en su interfaz de distribución predeterminada para invalidar la configuración global de las opciones de descarga.
El ejemplo WALKALL del InetSDK (\InetSDK\Samples\Walkall) muestra esta técnica para un host MSHTML. Se puede usar un método similar en hosts WebBrowser para lograr el mismo efecto.
MSHTML también pedirá un nuevo agente de usuario mediante DISPID_AMBIENT_USERAGENT al navegar a hipervínculos en los que se ha hecho clic. Esta propiedad ambient se puede invalidar, pero no se usa al llamar mediante programación al método Navigate. Tampoco hará que se altere la propiedad del objeto navigator del DOM o del comportamiento clientInformation: esta propiedad siempre reflejará la cadena userAgent UserAgent de Internet Explorer.
Un host MFC del control WebBrowser puede afectar fácilmente a estas propiedades de entorno reemplazando el método OnAmbientProperty de la clase basada en CWnd de hospedaje:
BOOL CWBHostView::OnAmbientProperty(COleControlSite* pSite,
DISPID dispid, VARIANT* pvar)
{
USES_CONVERSION;
// Change download properties - no java, no scripts...
if (dispid == DISPID_AMBIENT_DLCONTROL)
{
pvar->vt = VT_I4;
pvar->lVal = DLCTL_NO_SCRIPTS | DLCTL_NO_JAVA
| DLCTL_NO_RUNACTIVEXCTLS | DLCTL_NO_DLACTIVEXCTLS;
return TRUE;
}
// Change user agent for this web browser host during hyperlinks
if (dispid == DISPID_AMBIENT_USERAGENT)
{
CString strUserAgent("MyWebBrowserHost");
pvar->vt = VT_BSTR;
pvar->bstrVal = ::SysAllocString(T2OLE(strUserAgent));
return TRUE;
}
return CView::OnAmbientProperty(pSite, dispid, pvar);
}
Los DISPID_AMBIENT_ _ y *DLCTL*** se definen en Mshtmdid.h (\InetSDK\Include\MSHTMDID. H).
Referencias
Para obtener más información acerca del desarrollo de soluciones basadas en web para Microsoft Internet Explorer, vea Internet Explorer mode y DevTools.