WebBrowser-Steuerelement Clients verwenden globale Einstellungen

In diesem Artikel werden Methoden zum Implementieren globaler Einstellungen für die Freigabe von WebBrowser-Steuerelement Clients bereitgestellt, indem die onambientproperty-Methode der hostenden CWnd-basierten Klasse überschrieben wird.

Original Version des Produkts:   Internet Explorer
Ursprüngliche KB-Nummer:   183412

Problembeschreibung

Alle Hosts des WebBrowser-Steuerelements verwenden dieselben globalen Internet Einstellungen.

Lösung

Für die meisten globalen Internet Einstellungen gibt es keine unterstützte Methode zum automatischen Speichern einer Reihe von Eigenschaften für jeden Webbrowser Host.

Bestimmte Downloadoptionen, beispielsweise, ob ActiveX-Steuerelemente heruntergeladen werden sollen, können jedoch überschrieben und pro Host angegeben werden.

Status

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen

Wie im Internet Client SDK (InetSDK) beschrieben, können Webbrowser Hosts die DISPID_AMBIENT_DLCONTROL AMBIENT-Eigenschaft auf Ihrer standardmäßigen Dispatch-Schnittstelle implementieren, um die globalen Einstellungen für Downloadoptionen außer Kraft zu setzen.

Das WALKALL-Beispiel im InetSDK (\InetSDK\Samples\Walkall) veranschaulicht diese Technik für einen MSHTML-Host. Eine ähnliche Methode kann in Webbrowser Hosts verwendet werden, um denselben Effekt zu erzielen.

MSHTML fragt auch nach einem neuen Benutzer-Agent über DISPID_AMBIENT_USERAGENT , wenn Sie zu geklickter Hyperlinks navigieren. Diese Ambient-Eigenschaft kann überschrieben werden, wird aber nicht verwendet, wenn die Navigate-Methode programmgesteuert aufgerufen wird. Die userAgent Eigenschaft des Navigator-Objekts oder Client Information -Verhaltens des DOM wird dadurch auch nicht geändert – diese Eigenschaft gibt immer die eigene userAgent -Zeichenfolge von Internet Explorer wieder.

Ein MFC-Host des WebBrowser-Steuerelements kann diese Umgebungseigenschaften leicht beeinflussen, indem die onambientproperty -Methode der hostenden CWnd-basierten Klasse außer Kraft gesetzt wird:

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);
}

Die Werte DISPID_AMBIENT_* und DLCTL_* sind in definiert Mshtmdid.h (\InetSDK\Include\MSHTMDID. H).

Informationsquellen

Weitere Informationen zum Entwickeln von webbasierten Lösungen für Microsoft Internet Explorer finden Sie unter Internet Explorer-Modus und DevTools.