How to Come recuperare l'URL di una pagina Web da un controllo ActiveX

Dichiarazione di non responsabilità per contenuto KB ritirato

Il contenuto di questo articolo è riferito a prodotti per cui Microsoft non offre più il supporto. Questo articolo viene pertanto offerto "così com'è" e non sarà più aggiornato.

Sommario

In questo articolo é contenuta una descrizione di come un controllo ActiveX é in grado di recuperare l'URL (Uniform Resource Locator, identificatore uniforme di risorsa) della pagina Web o del documento in cui risiede.


Ciò può essere utile per limitare l'utilizzo di un controllo ActiveX a un dominio o sito in particolare o per accedere a file quando é fornito un percorso relativo.

Informazioni

Durante l'inizializzazione di un controllo ActiveX incorporato, Internet Explorer (IE) invia un puntatore al proprio sito client tramite la chiamata IOleObject::SetClientSite(). E possibile utilizzare questo processo per recuperare un moniker per il contenitore oppure per accedere al modello dell'oggetto documento per recuperare l'URL relativo alla pagina Web che fa da host.


In questo articolo é contenuta una descrizione di come recuperare l'URL corrente da un moniker contenitore. Per ulteriori informazioni su come ottenere l'URL dal modello dell'oggetto documento, vedere l'articolo seguente della Knowledge Base (informazioni in lingua inglese):
172763 INFO: Accessing the Object Model from Within an ActiveX Control
Attenersi alla seguente procedura per recuperare l'URL corrente da un moniker contenitore:
  1. Ottenere il puntatore di interfaccia del sito client (IOleClientSite). Il contenitore chiama IOleObject::SetClientSite() per passare un puntatore al sito client. Ignorare questo metodo per nascondere il puntatore.
  2. Ottenere un moniker per il sito client mediante la chiamata IOleClientSite::GetMoniker().
  3. Chiamare IMoniker::GetDisplayName() per ottenere l'URL relativo al documento corrente.
Il codice d'esempio seguente descrive come eseguire le operazioni sopra citate ignorando il metodo IOleObject::SetClientSite() in un controllo ActiveX ATL (Active Template Library, libreria attiva di modelli):

Codice di esempio

STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite != NULL)
{
// Obtain URL from container moniker.
CComPtr<IMoniker> spmk;
LPOLESTR pszDisplayName;

if (SUCCEEDED(pClientSite->GetMoniker(
OLEGETMONIKER_TEMPFORUSER,
OLEWHICHMK_CONTAINER,
&spmk)))
{
if (SUCCEEDED(spmk->GetDisplayName(
NULL, NULL, &pszDisplayName)))
{
USES_CONVERSION;

CComBSTR bstrURL;
bstrURL = pszDisplayName;

ATLTRACE("The current URL is %s\n", OLE2T(bstrURL));
CoTaskMemFree((LPVOID)pszDisplayName);
}
}
}

return IOleObject_SetClientSite(pClientSite);
}

Riferimenti

Per ulteriori informazioni sulle interfacce IOleObject, IoleClientSite e IOleContainer, consultare la Guida in linea di Microsoft Visual C++.


(c) Microsoft Corporation 1998, Tutti i diritti riservati. Con il contributo di Mark Davis, Microsoft Corporation
Proprietà

ID articolo: 181678 - Ultima revisione: 20 gen 2006 - Revisione: 1

Feedback