Aggiornamento di un controllo ActiveX esistente

I controlli ActiveX esistenti (in precedenza controlli OLE) possono essere usati su Internet senza alcuna modifica. Tuttavia, è possibile modificare i controlli per migliorarne le prestazioni.

Importante

ActiveX è una tecnologia legacy che non deve essere usata per il nuovo sviluppo. Per altre informazioni sulle tecnologie moderne che sostituisce ActiveX, vedere Controlli ActiveX. Il supporto per i controlli ActiveX è stato deprecato nelle versioni successive di Internet Explorer e non è supportato dai browser moderni. Microsoft non fornisce più componenti ActiveX accessibili dal Web.

Quando si usa il controllo in una pagina Web, è necessario tenere presenti considerazioni aggiuntive. Il file con estensione ocx e tutti i file di supporto devono trovarsi nel computer di destinazione o essere scaricati su Internet. Ciò rende le dimensioni del codice e il tempo di download una considerazione importante. I download possono essere inseriti in un pacchetto in un file con estensione cab firmato. È possibile contrassegnare il controllo come sicuro per la creazione di script e come sicuro per l'inizializzazione.

Questo articolo tratta gli argomenti seguenti:

È anche possibile aggiungere ottimizzazioni, come descritto in Controlli ActiveX: Ottimizzazione. I moniker possono essere usati per scaricare proprietà e BLOB di grandi dimensioni in modo asincrono, come descritto in Controlli ActiveX su Internet.

Codice di creazione del pacchetto per il download

Per altre informazioni su questo argomento, vedere Creazione di pacchetti di controlli ActiveX.

Tag CODEBA edizione Standard

I controlli ActiveX sono incorporati nelle pagine Web usando il <OBJECT> tag . Il CODEBASE parametro del <OBJECT> tag specifica il percorso da cui scaricare il controllo. CODEBASE può puntare a diversi tipi di file correttamente.

Uso del tag CODEBA edizione Standard con un file OCX

CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4,
    70,
    0,
    1086"

Questa soluzione scarica solo il file con estensione ocx del controllo e richiede che tutte le DLL di supporto siano già installate nel computer client. Questo funzionerà per i controlli ActiveX di Internet Explorer e MFC compilati con Visual C++, perché Internet Explorer include le DLL di supporto per i controlli Visual C++. Se per visualizzare questo controllo viene utilizzato un altro browser Internet che supporta il controllo ActiveX, questa soluzione non funzionerà.

Uso del tag CODEBA edizione Standard con un file INF

CODEBASE="http://example.contoso.com/trustme.inf"

Un file con estensione inf controlla l'installazione di un file con estensione ocx e dei relativi file di supporto. Questo metodo non è consigliato perché non è possibile firmare un file con estensione inf (vedere Codice di firma per i puntatori alla firma del codice).

Uso del tag CODEBA edizione Standard con un file CAB

CODEBASE="http://example.contoso.com/acontrol.cab#version=1,
    2,
    0,
    0"

I file CAB sono il modo consigliato per creare pacchetti di controlli ActiveX che usano MFC. La creazione di un controllo ActiveX MFC in un file CAB consente di includere un file con estensione inf per controllare l'installazione del controllo ActiveX e di tutte le DLL dipendenti, ad esempio le DLL MFC. L'uso di un file CAB comprime automaticamente il codice per il download più rapido. Se si usa un file CAB per il download dei componenti, è più veloce firmare l'intero file CAB rispetto a ogni singolo componente.

Creazione di file CAB

Gli strumenti per creare file cab sono ora parte di Windows SDK.

Il file cab a cui CODEBASE punta deve contenere il file con estensione ocx per il controllo ActiveX e un file inf per controllarne l'installazione. Per creare il file CAB, specificare il nome del file di controllo e un file inf. Non includere DLL dipendenti che potrebbero esistere già nel sistema in questo file cab. Ad esempio, le DLL MFC vengono incluse in un file CAB separato e fanno riferimento al file con estensione inf di controllo.

Per informazioni dettagliate su come creare un file CAB, vedere Creazione di un file CAB.

The INF File

L'esempio seguente, spindial.inf, elenca i file di supporto e le informazioni sulla versione necessarie per il controllo Spindial MFC. Mfc42.cab viene fornito e firmato da Microsoft.

Contents of spindial.inf:
[mfc42installer]
file-win32-x86=http://example.contoso.com/controls/vc/mfc42.cab
[Olepro32.dll] - FileVersion=5,
    0,
    4261,
    0
[Mfc42.dll] - FileVersion=6,
    0,
    8168,
    0
[Msvcrt.dll] - FileVersion=6,
    0,
    8168,
    0

Tag <OBJECT>

Nell'esempio seguente viene illustrato l'uso del <OBJECT> tag per creare un pacchetto del controllo di esempio Spindial MFC.

<OBJECT ID="Spindial1" WIDTH=100 HEIGHT=51
    CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
    CODEBASE="http://example.contoso.com/spindial.cab#Version=1,0,0,001">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
<PARAM NAME="NeedlePosition" VALUE="2">
</OBJECT>

In questo caso, spindial.cab conterrà due file, spindial.ocx e spindial.inf. Il comando seguente compilerà il file CAB:

C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf

Il -s 6144 parametro riserva spazio nell'archivio per la firma del codice.

Tag di versione

Si noti che le #Version informazioni specificate con un file CAB si applicano al controllo specificato dal parametro CLASSID del <OBJECT> tag .

A seconda della versione specificata, è possibile forzare il download del controllo. Per le specifiche complete del OBJECT tag, incluso il parametro CODEBA edizione Standard, vedere le informazioni di riferimento su W3C.

Contrassegno di un Cassaforte di controllo per lo scripting e l'inizializzazione

I controlli ActiveX usati nelle pagine Web devono essere contrassegnati come sicuri per lo scripting e sicuri per l'inizializzazione se sono effettivamente sicuri. Un controllo sicuro non eseguirà operazioni di I/O su disco o accederà direttamente alla memoria o ai registri di un computer.

I controlli possono essere contrassegnati come sicuri per la creazione di script e la sicurezza per l'inizializzazione tramite il Registro di sistema. Modificare DllRegisterServer per aggiungere voci simili alle seguenti per contrassegnare il controllo come sicuro per la creazione di script e la persistenza nel Registro di sistema. Un metodo alternativo consiste nell'implementare IObjectSafety.

Si definiranno GUID (Identificatori univoci globali) per il controllo per contrassegnarlo in modo sicuro per la creazione di script e per la persistenza. I controlli che possono essere inseriti in script in modo sicuro conterranno una voce del Registro di sistema simile alla seguente:

HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}

I controlli che possono essere inizializzati in modo sicuro dai dati persistenti sono contrassegnati come sicuri per la persistenza con una voce del Registro di sistema simile a:

HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}

Aggiungere voci simili alle seguenti (sostituendo l'ID classe del controllo al posto di {06889605-B8D0-101A-91F1-00608CEAD5B3}) per associare le chiavi all'ID classe seguente:

HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}

Problemi relativi alle licenze

Se si vuole usare un controllo con licenza in una pagina Web, è necessario verificare che il contratto di licenza consenta l'uso su Internet e creare un file di pacchetto di licenza (LPK) per esso.

Un controllo ActiveX concesso in licenza non verrà caricato correttamente in una pagina HTML se il computer che esegue Internet Explorer non è concesso in licenza per l'uso del controllo. Ad esempio, se un controllo concesso in licenza è stato compilato con Visual C++, la pagina HTML che usa il controllo verrà caricata correttamente nel computer in cui è stato compilato il controllo, ma non verrà caricata in un computer diverso, a meno che non siano incluse informazioni sulle licenze.

Per usare un controllo ActiveX concesso in licenza in Internet Explorer, è necessario controllare il contratto di licenza del fornitore per verificare che la licenza per il controllo consenta:

  • Ridistribuzione

  • Uso del controllo su Internet

  • Uso del parametro Codebase

Per usare un controllo concesso in licenza in una pagina HTML in un computer senza licenza, è necessario generare un file di pacchetto di licenza (LPK). Il file LPK contiene licenze di runtime per i controlli con licenza nella pagina HTML. Questo file viene generato tramite LPK_TOOL.EXE fornito con ActiveX SDK.

Per creare un file LPK

  1. Eseguire LPK_TOOL.EXE in un computer concesso in licenza per usare il controllo .

  2. Nella casella di riepilogo Controlli disponibili della finestra di dialogo Strumento di creazione pacchetti di licenza selezionare ogni controllo ActiveX concesso in licenza che verrà utilizzato nella pagina HTML e fare clic su Aggiungi.

  3. Fare clic su Salva e esci e digitare un nome per il file LPK. Verrà creato il file LPK e verrà chiusa l'applicazione.

Per incorporare un controllo con licenza in una pagina HTML

  1. Modificare la pagina HTML. Nella pagina HTML inserire un <tag OBJECT> per l'oggetto License Manager prima di qualsiasi altro <tag OBJECT> . License Manager è un controllo ActiveX installato con Internet Explorer. Di seguito è riportato l'ID della classe. Impostare la proprietà LPKPath dell'oggetto License Manager sul percorso e sul nome del file LPK. È possibile avere un solo file LPK per pagina HTML.
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
</OBJECT>
  1. Inserire il <tag OBJECT> per il controllo concesso in licenza dopo il tag License Manager.

    Ad esempio, una pagina HTML che visualizza il controllo Microsoft Masked Edit è illustrata di seguito. Il primo ID classe è per il controllo License Manager, il secondo ID classe è per il controllo Masked Edit. Modificare i tag in modo che puntino al percorso relativo del file con estensione lpk creato in precedenza e aggiungere un tag oggetto, incluso l'ID classe per il controllo.

  2. Inserire l'attributo <EMBED> per il file LPK, se si usa il plug-in ActiveX NCompass.

    Se il controllo può essere visualizzato in altri browser abilitati per Active, ad esempio Netscape usando il plug-in ActiveX NCompass, è necessario aggiungere la <sintassi EMBED> come illustrato di seguito.

<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="maskedit.lpk">

<EMBED SRC = "maskedit.LPK">

</OBJECT>
<OBJECT CLASSID="clsid:C932BA85-4374-101B-A56C-00AA003668DC" WIDTH=100 HEIGHT=25>
</OBJECT>

Per altre informazioni sulle licenze di controllo, vedere Controlli ActiveX: Gestione delle licenze di un controllo ActiveX.

Codice di firma

La firma del codice è progettata per identificare l'origine del codice e per garantire che il codice non sia stato modificato dopo la firma. A seconda delle impostazioni di sicurezza del browser, gli utenti possono essere avvisati prima del download del codice. Gli utenti possono scegliere di considerare attendibili determinati proprietari o società di certificati, nel qual caso il codice firmato da tali certificati verrà scaricato senza avviso. Il codice è firmato digitalmente per evitare manomissioni.

Assicurarsi che il codice finale sia firmato in modo che il controllo possa essere scaricato automaticamente senza visualizzare messaggi di avviso di attendibilità. Per informazioni dettagliate su come firmare il codice, vedere la documentazione su Authenticode in ActiveX SDK e vedere Firma di un file CAB.

A seconda delle impostazioni del livello di attendibilità e di sicurezza del browser, è possibile che venga visualizzato un certificato per identificare la persona o la società di firma. Se il livello di sicurezza non è nessuno o se il proprietario del certificato del controllo firmato è attendibile, non verrà visualizzato un certificato. Vedi Internet Explorer Browser Cassaforte ty Levels and Control Behavior (Livelli di controllo e comportamento di controllo) per informazioni dettagliate su come l'impostazione di sicurezza del browser determinerà se il controllo viene scaricato e visualizzato un certificato.

Il codice delle garanzie di firma digitale non è stato modificato dopo la firma. Un hash del codice viene acquisito e incorporato nel certificato. Questo hash viene successivamente confrontato con un hash del codice acquisito dopo il download del codice, ma prima dell'esecuzione. Le aziende come Verisign possono fornire chiavi private e pubbliche necessarie per firmare il codice. ActiveX SDK viene fornito con MakeCert, un'utilità per la creazione di certificati di test.

Gestione della tavolozza

I contenitori determinano la tavolozza e la rendono disponibile come proprietà di ambiente DISPID_AMBIENT_PALETTE. Un contenitore (ad esempio, Internet Explorer) sceglie una tavolozza usata da tutti i controlli ActiveX in una pagina per determinare la propria tavolozza. Ciò impedisce lo sfarfallio dello schermo e presenta un aspetto coerente.

Un controllo può eseguire l'override per gestire la notifica delle modifiche apportate OnAmbientPropertyChange alla tavolozza.

Un controllo può eseguire l'override OnGetColorSet per restituire un set di colori per disegnare la tavolozza. I contenitori usano il valore restituito per determinare se un controllo è compatibile con la tavolozza.

Sotto le linee guida DI OCX 96, un controllo deve sempre realizzare la sua tavolozza in background.

I contenitori meno recenti che non usano la proprietà della tavolozza di ambiente invieranno WM_QUERYNEWPALETTE e WM_PALETTECHANGED messaggi. Un controllo può eseguire l'override OnQueryNewPalette e OnPaletteChanged gestire questi messaggi.

Internet Explorer Browser Cassaforte ty Levels and Control Behavior

Un browser include opzioni per il livello di sicurezza, configurabile dall'utente. Poiché le pagine Web possono contenere contenuto attivo che potrebbe potenzialmente danneggiare il computer di un utente, i browser consentono all'utente di selezionare le opzioni per il livello di sicurezza. A seconda del modo in cui un browser implementa i livelli di sicurezza, un controllo potrebbe non essere scaricato affatto o visualizzerà un certificato o un messaggio di avviso per consentire all'utente di scegliere in fase di esecuzione se scaricare o meno il controllo. Di seguito è riportato il comportamento dei controlli ActiveX con livelli di sicurezza alti, medi e bassi in Internet Explorer.

Modalità Cassaforte ty elevata

  • I controlli non firmati non verranno scaricati.

  • I controlli firmati visualizzeranno un certificato se non attendibile (un utente può scegliere un'opzione per considerare sempre attendibile il codice da questo proprietario del certificato da ora in poi).

  • Solo i controlli contrassegnati come sicuri avranno dati persistenti e/o possono essere creabili tramite script.

Modalità media Cassaforte ty

  • I controlli non firmati visualizzeranno un avviso prima del download.

  • I controlli firmati visualizzeranno un certificato se non attendibile.

  • I controlli non contrassegnati come sicuri visualizzeranno un avviso.

Modalità bassa Cassaforte ty

  • I controlli vengono scaricati senza avvisi.

  • La creazione di script e la persistenza si verificano senza avviso.

Vedi anche

Attività di programmazione Internet MFC
Nozioni di base sulla programmazione Internet MFC
Controlli ActiveX MFC: licenze di un controllo ActiveX