I client di controllo WebBrowser condividono le impostazioni globali

Avviso

L'applicazione desktop Internet Explorer 11, ritirata e fuori supporto, è stata disabilitata in modo permanente tramite un aggiornamento di Microsoft Edge su alcune versioni di Windows 10. Per altre informazioni, vedere Domande frequenti sul ritiro delle app desktop di Internet Explorer 11.

Questo articolo fornisce metodi sull'implementazione di impostazioni globali per la condivisione dei client di controllo WebBrowser eseguendo l'override del metodo OnAmbientProperty della classe basata su CWnd che ospita.

Versione originale del prodotto: Internet Explorer
Numero KB originale: 183412

Sintomi

Tutti gli host del controllo WebBrowser condividono le stesse impostazioni Internet globali.

Risoluzione

Per la maggior parte delle impostazioni Internet globali, non è disponibile alcun metodo supportato per il salvataggio automatico di un set di proprietà per ogni host WebBrowser.

Tuttavia, alcune opzioni di download, ad esempio se scaricare o meno i controlli ActiveX, possono essere sostituite e specificate per ogni host.

Stato

Si tratta di un comportamento legato alla progettazione del prodotto.

Ulteriori informazioni

Come documentato in Internet Client SDK (InetSDK), gli host WebBrowser possono implementare la proprietà di ambiente DISPID_AMBIENT_DLCONTROL nell'interfaccia di invio predefinita per eseguire l'override delle impostazioni globali per le opzioni di download.

L'esempio WALKALL in InetSDK (\InetSDK\Samples\Walkall) illustra questa tecnica per un host MSHTML. Un metodo simile può essere usato negli host WebBrowser per ottenere lo stesso effetto.

MSHTML chiederà anche un nuovo agente utente tramite DISPID_AMBIENT_USERAGENT quando si passa ai collegamenti ipertestuali su cui si fa clic. Questa proprietà di ambiente può essere sottoposta a override, ma non viene usata quando si chiama il metodo Navigate a livello di codice. Inoltre, la proprietà dell'oggetto navigatore dom o del comportamento clientInformation non userAgent verrà modificata. Questa proprietà rifletterà sempre la stringa UserAgent di Internet Explorer.

Un host MFC del controllo WebBrowser può influire facilmente su queste proprietà di ambiente eseguendo l'override del metodo OnAmbientProperty della classe basata su CWnd che ospita:

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

I valori DISPID_AMBIENT_* e DLCTL_* sono definiti in Mshtmdid.h (\InetSDK\Include\MSHTMDID. H).

Riferimenti

Per altre informazioni sullo sviluppo di soluzioni basate sul Web per Microsoft Internet Explorer, vedere Modalità Internet Explorer e DevTools.