Aggiornamento di un controllo ActiveX esistente

I ActiveX esistenti (in precedenza controlli OLE) possono essere usati in Internet senza modifiche. È 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 sorrendono ActiveX, vedere ActiveX Controls. Il supporto ActiveX controlli è stato deprecato nelle versioni successive di Internet Explorer e non è supportato dai browser moderni. Microsoft non fornisce più componenti ActiveX web.

Quando si usa il controllo in una pagina Web, è necessario tenere presenti altre considerazioni. Il file con estensione ocx e tutti i file di supporto devono essere nel computer di destinazione o essere scaricati tramite Internet. In questo modo le dimensioni del codice e il tempo di download sono una considerazione importante. I download possono essere in pacchetto in un file .cab firmato. È possibile contrassegnare il controllo come sicuro per lo scripting 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 le proprietà e i BLOB di grandi dimensioni in modo asincrono, come descritto in ActiveX Controls on the Internet.

Creazione di pacchetti di codice per il download

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

The CODEBASE Tag

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

Uso del tag CODEBASE 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. Ciò funzionerà per i controlli Internet Explorer mfc ActiveX compilati con Visual C++, perché Internet Explorer viene fornito con le DLL di supporto per Visual C++ controlli. Se per visualizzare questo controllo viene ActiveX un altro browser Internet che supporta il controllo, questa soluzione non funzionerà.

Uso del tag CODEBASE 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 CODEBASE 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 ActiveX controlli che usano MFC. La creazione di un pacchetto di un controllo ActiveX MFC in un file CAB consente di includere un file inf per controllare l'installazione del controllo ActiveX e di qualsiasi DLL dipendente, ad esempio le DLL MFC. L'uso di un file CAB comprime automaticamente il codice per un download più rapido. Se si usa un file .cab per il download dei componenti, è più veloce firmare l'intero file .cab di ogni singolo componente.

Creazione di file CAB

Gli strumenti per creare file CAB fanno ora parte di Windows SDK.

Il file cab a cui punta deve contenere il file con estensione ocx per il controllo ActiveX e un file inf per CODEBASE 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 già esistere nel sistema in questo file CAB. Ad esempio, le DLL MFC vengono in pacchetto in un file CAB separato e a cui fa riferimento il file 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. Il 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

The < OBJECT > Tag

Nell'esempio seguente viene illustrato l'uso del <OBJECT> tag per creare un pacchetto del controllo 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 compila 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 qui che le informazioni specificate con un file CAB si applicano al controllo specificato dal #Version#Version del <OBJECT> tag.

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

Contrassegno di un controllo Cassaforte script e inizializzazione

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

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

Si definiranno GUID (Globally Unique Identifiers) per il controllo per contrassegnarlo come sicuro per lo scripting e per la persistenza. I controlli che possono essere scriptati 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 da dati persistenti sono contrassegnati come sicuri per la persistenza con una voce del Registro di sistema simile alla seguente:

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

Aggiungere voci simili alle seguenti (sostituendo l'ID classe del controllo al posto di ) per associare le chiavi {06889605-B8D0-101A-91F1-00608CEAD5B3} all'ID di 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 concesso in licenza in una pagina Web, è necessario verificare che il contratto di licenza ne consenta l'uso su Internet e creare un file del pacchetto di licenza (LPK).

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 usando 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 le informazioni sulle licenze.

Per usare un controllo ActiveX 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 in 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 run-time per i controlli con licenza nella pagina HTML. Questo file viene generato tramite LPK_TOOL.EXE fornito con l'SDK ActiveX.

Per creare un file LPK

  1. Eseguire LPK_TOOL.EXE in un computer concesso in licenza per l'uso del controllo .

  2. Nella casella di riepilogo Controlli disponibili della finestra di dialogo License Package Authoring Tool selezionare ogni controllo ActiveX concesso in licenza che verrà usato nella pagina HTML e fare clic su Aggiungi.

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

Per incorporare un controllo concesso in 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 classe. Impostare la proprietà LPKPath dell'oggetto License Manager sul percorso e sul nome del file LPK. È possibile avere un solo file LPK per ogni 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 di classe è per il controllo License Manager, il secondo ID di 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 che include l'ID classe per il controllo.

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

    Se il controllo può essere visualizzato in altri browser abilitati per Active, ad esempio Netscape che usa il plug-in NCompass ActiveX, è 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 dei controlli, vedere ActiveX Controls: Licensing an ActiveX Control.

Firma del codice

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 alcuni proprietari o società di certificati, nel qual caso il codice firmato da tali attendibili verrà scaricato senza preavviso. 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 del livello di sicurezza del browser, è possibile che venga visualizzato un certificato per identificare la persona o la società che firma. Se il livello di sicurezza non è nessuno o se il proprietario del certificato del controllo firmato è attendibile, non verrà visualizzato un certificato. Vedere Internet Explorer livelli di sicurezza del browser e Comportamento di controllo per informazioni dettagliate su come l'impostazione di sicurezza del browser determinerà se il controllo viene scaricato e viene visualizzato un certificato.

La firma digitale garantisce che il codice non sia stato modificato dopo la firma. Un hash del codice viene preso e incorporato nel certificato. Questo hash viene successivamente confrontato con un hash del codice prelevato dopo il download del codice, ma prima dell'esecuzione. Aziende come Verisign possono fornire chiavi private e pubbliche necessarie per firmare il codice. L ActiveX SDK viene fornito con MakeCert, un'utilità per la creazione di certificati di test.

Gestione del riquadro

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 ActiveX controlli in una pagina per determinare la propria tavolozza. Ciò impedisce lo sfarfallio della visualizzazione e presenta un aspetto coerente.

Un controllo può eseguire OnAmbientPropertyChange l'override di per gestire la notifica delle modifiche al riquadro.

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

In base alle linee guida di OCX 96, un controllo deve sempre realizzare la tavolozza in background.

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

Internet Explorer livelli di sicurezza del browser e comportamento di controllo

Un browser include opzioni per il livello di sicurezza, configurabili dall'utente. Poiché le pagine Web possono contenere contenuto attivo che potrebbe 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, è possibile che un controllo non venga scaricato o che venga visualizzato un certificato o un messaggio di avviso per consentire all'utente di scegliere in fase di esecuzione se scaricare o meno il controllo. Il comportamento dei controlli ActiveX livelli di sicurezza alti, medi e bassi Internet Explorer elencati di seguito.

Modalità di sicurezza elevata

  • I controlli non firmati non verranno scaricati.

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

  • Solo i controlli contrassegnati come sicuri avranno dati persistenti e/o saranno selezionabili da script.

Modalità di sicurezza media

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

  • I controlli firmati visualizzano un certificato se non attendibili.

  • I controlli non contrassegnati come sicuri visualizzano un avviso.

Modalità di sicurezza bassa

  • I controlli vengono scaricati senza avviso.

  • Gli script e la persistenza vengono eseguiti senza avviso.

Vedi anche

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