Share via


Mettre à jour un contrôle ActiveX existant

Exister des contrôles ActiveX (précédemment OLE contrôles) peut être utilisé sur Internet sans modification.Toutefois, vous pouvez modifier des contrôles pour améliorer les performances.À l'aide de votre contrôle sur une page Web, des considérations supplémentaires.Le fichier .ocx et tous les fichiers de prise en charge doivent être sur l'ordinateur cible ou téléchargés sur Internet.Cela provoque le nombre et l'heure de téléchargement d'instructions une considération importante.Les téléchargements peuvent être empaquetés dans un fichier .cab signé.Vous pouvez marquer votre contrôle comme sécurisée de script, et comme sécurisée pour initialiser.

Cet article explique les rubriques suivantes :

  • Code de package pour télécharger

  • Marquer un coffre-fort de contrôle de Script et initialiser

  • Problèmes d'attribution de licences

  • Code de signature

  • Gérer la palette

  • Niveaux de sécurité de navigateur Internet Explorer et comportement de contrôle

Vous pouvez également ajouter des optimisations, comme décrit dans Contrôles ActiveX : Optimisation.Les monikers peuvent être utilisés pour télécharger des propriétés et des grands objets blobs de façon asynchrone, comme décrit dans Contrôles ActiveX sur Internet.

Code de package pour télécharger

Pour plus d'informations sur cette rubrique, consultez l'article de la Base de connaissances « empaquetage des contrôles MFC pour l'utilisation de Internet » (Q167158).Vous trouverez les articles de la Base de connaissances sur le CD-ROM de MSDN Library ou à l'adresse https://support.microsoft.com/default.aspx.

941zhks9.collapse_all(fr-fr,VS.110).gifLa balise de CODE BASE

Les contrôles ActiveX sont incorporés dans les pages Web à l'aide de la balise d' <OBJECT> .Le paramètre d' CODEBASE de la balise d' <OBJECT> spécifie l'emplacement à partir duquel pour télécharger le contrôle.CODEBASE peut pointer vers un nombre quelconque d'autres types de fichier avec succès.

941zhks9.collapse_all(fr-fr,VS.110).gifÀ l'aide de l'indicateur CODE BASE avec un fichier d'OCX

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

Cette solution télécharge uniquement le fichier du fichier .ocx du contrôle, et requiert que toutes les DLL de prise en charge d'être déjà installés sur l'ordinateur client.Cela fonctionnera pour Internet Explorer et ActiveX MFC contrôle créé avec Visual C++, parce qu'Internet Explorer est fourni avec les DLL de prise en charge pour les contrôles de Visual C++.Si un autre navigateur Internet qui est ActiveX capable de contrôle est utilisé pour afficher ce contrôle, cette solution ne fonctionnera pas.

941zhks9.collapse_all(fr-fr,VS.110).gifÀ l'aide de l'indicateur CODE BASE avec un fichier inf

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

Un fichier de .inf vérifie l'installation d'un fichier .ocx et de ses fichiers de prise en charge.Cette méthode n'est pas recommandée car il n'est pas possible de signer un fichier de .inf (voir l' Code de signature pour les pointeurs sur la signature de code).

941zhks9.collapse_all(fr-fr,VS.110).gifÀ l'aide de l'indicateur CODE BASE avec un fichier CAB

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

Les fichiers CAB est la méthode recommandée pour empaqueter les contrôles ActiveX qui utilisent MFC.Empaquetage un contrôle ActiveX MFC dans un fichier CAB permet un fichier de .inf à comprendre pour contrôler l'installation du contrôle ActiveX et de tous les DLL dépendantes (tels que les DLL MFC).À l'aide d'un fichier CAB compresse automatiquement le code d'un téléchargement plus rapide.Si vous utilisez un fichier .cab pour le téléchargement composant, il est plus rapide pour signer le fichier entier .cab que chaque composant individuel.

941zhks9.collapse_all(fr-fr,VS.110).gifCréer des fichiers CAB

Vous pouvez télécharger le kit de développement de package de l'article de la Base de 310618 : Kit de développement logiciel de package Microsoftconnaissances.Dans ce kit vous trouverez les outils nécessaires pour construire des fichiers CAB.

Le fichier CAB globale pointe vers CODEBASE doit contenir le fichier .ocx pour votre contrôle ActiveX et un fichier de .inf pour contrôler son installation.Vous créez le fichier CAB en spécifiant le nom de votre fichier de commandes et d'un fichier de .inf.N'incluez pas les DLL dépendantes qui peuvent déjà exister sur le système dans ce fichier CAB.Par exemple, les DLL MFC sont empaquetés dans un fichier CAB distinct et mentionnés par le fichier de contrôle de .inf.

Pour plus d'informations sur la création d'un fichier CAB, consultez l' Créer un fichier CAB.

941zhks9.collapse_all(fr-fr,VS.110).gifLe fichier inf

L'exemple suivant, spindial.inf, répertorie les fichiers de prise en charge et les informations de version sont requis pour le contrôle MFC Spindial.Notez l'emplacement des DLL MFC est un site Web Microsoft.Le mfc42.cab est fourni et signée par Microsoft.

Contents of spindial.inf:
[mfc42installer] 
file-win32-x86=http://activex.microsoft.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

941zhks9.collapse_all(fr-fr,VS.110).gifLa balise d' <OBJECT>

L'exemple suivant illustre l'utilisation de la balise d' <OBJECT> pour empaqueter le contrôle exemple MFC Spindial.

<OBJECT ID="Spindial1" WIDTH=100 HEIGHT=51
  CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
  CODEBASE="http://example.microsoft.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>

Dans ce cas, spindial.cab contiendra deux fichiers, spindial.ocx et spindial.inf.La commande suivante génère le fichier CAB :

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

L'espace de réserves de paramètre d' –s 6144 dans le package pour la signature de code.

941zhks9.collapse_all(fr-fr,VS.110).gifLa balise de version

Notez que les informations d' #Versionspécifiées avec un fichier CAB appliquent au contrôle spécifié par le paramètre d' CLASSID de la balise d' <OBJECT> .

Selon la version spécifiée, vous pouvez forcer le téléchargement de votre contrôle.Avec des fonctionnalités complètes de la balise d' OBJECT y compris le paramètre d' CODEBASE, consultez à W3C la référence.

Marquer un coffre-fort de contrôle de Script et initialiser

Les contrôles ActiveX utilisés dans les pages Web doivent être marquées comme sécurisée de script et sécurisée pour initialiser s'ils sont en fait sécurisés.Un contrôle sécurisé n'effectuera pas le disque E/S ou n'accédera à la mémoire ou aux registres d'un ordinateur directement.

Les contrôles peuvent être marquées comme sécurisée de script et sécurisée pour initialiser via le Registre.Modifiez DllRegisterServer pour ajouter des entrées similaires au suivant pour marquer le contrôle comme sécurisée de script et la persistance dans le Registre.Une autre approche consiste à implémenter IObjectSafety.

Vous définirez GUID (identificateurs globaux uniques) de votre contrôle pour le marquer sécurisé de script et pour la persistance.Les contrôles qui peuvent être écrits sans risque contiendront une entrée du Registre présenter comme suit :

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

Les contrôles qui peuvent être initialisés en toute sécurité les données persistantes sont -vous marqué pour la persistance avec une entrée du Registre semblable à :

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

Ajoutez les entrées similaires au suivant (en remplaçant l'ID de classe de votre contrôle à la place d' {06889605-B8D0-101A-91F1-00608CEAD5B3}) pour associer vos clés avec l'ID de classe suivant :

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} 

Problèmes d'attribution de licences

Si vous souhaitez utiliser un contrôle autorisé sur une page Web, vous devez vérifier que le contrat de licence permet l'utilisation sur Internet et créez un fichier de package de licence (LPK) pour lui.

Un contrôle ActiveX autorisé ne chargera pas correctement dans une page HTML si l'ordinateur exécutant Internet Explorer n'est pas autorisé à utiliser le contrôle.Par exemple, si un contrôle sous licence est généré à l'aide de Visual C++, la page HTML à l'aide de le contrôle charge correctement sur l'ordinateur où le contrôle a été généré, mais il ne chargera pas sur un autre ordinateur à moins que les informations de licence sont incluses.

Pour utiliser un contrôle ActiveX autorisé dans Internet Explorer, vous devez vérifier le contrat de licence du constructeur de vérifier que la licence pour le contrôle permet :

  • Redistribution

  • Utilisation du contrôle sur Internet

  • Utilisation du paramètre du code base

Pour utiliser un contrôle autorisé dans une page HTML sur un ordinateur nonlicensed, vous devez générer un fichier de package de licence (LPK).Le fichier de LPK contient des licences utilisateur pour les contrôles sous licence dans la page HTML.Ce fichier est généré par l'intermédiaire de LPK_TOOL.EXE fourni avec ActiveX Kit de développement logiciel.Pour plus d'informations, consultez le site Web MSDN dans https://msdn.microsoft.com.

Pour créer un fichier LPK

  1. Exécutez LPK_TOOL.EXE sur un ordinateur qui est autorisé à utiliser le contrôle.

  2. Dans la boîte de dialogue de License Package Authoring Tool, dans la zone de liste de DisponibleContrôles, sélectionnez chaque contrôle ActiveX autorisé qui sera utilisé sur la page HTML et cliquez sur Ajouter.

  3. Cliquez sur Save & Exit et tapez un nom pour le fichier de LPK.Cette commande crée le fichier de LPK et clôturera l'application.

Pour inclure un contrôle autorisé sur une page HTML

  1. Modifiez votre page HTML.Dans la page HTML, insérez une balise d' <OBJECT> pour l'objet de gestionnaire de licence avant toutes les autres balises d' <OBJECT> .Le gestionnaire de licence est un contrôle ActiveX qui est installé avec Internet Explorer.Son ID de classe est indiqué ci-dessous.Affectez à la propriété de LPKPath de l'objet de gestionnaire de licence au chemin d'accès et le nom du fichier de LPK.Vous pouvez avoir qu'un seul fichier de LPK par page HTML.

    <OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
    </OBJECT>
    
  2. Insérez la balise d' <OBJECT> pour votre contrôle sous licence après la balise de gestionnaire de licence.

    Par exemple, une page HTML qui affiche le contrôle Microsoft Masked Edit est illustrée ci-dessous.Le premier ID de classe est pour le contrôle du gestionnaire de licence, le deuxième ID de classe est pour le contrôle de Masked Edit.Modifiez les balises pour indiquer le chemin d'accès relatif du fichier de .lpk que vous avez créé précédemment, puis ajoutez une balise object notamment l'ID de classe de votre contrôle.

  3. Insérez l'attribut d' <EMBED> de votre fichier de LPK, si à l'aide de le plug-in de NCompass ActiveX.

    Si votre contrôle peut être affiché sur d'autres navigateurs activés actifs (par exemple, Netscape à l'aide de le plug-in de NCompass ActiveX — vous devez ajouter la syntaxe d' <EMBED> comme indiqué ci-dessous.

    <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>
    

Pour plus d'informations sur l'attribution d'une licence de contrôle, consultez l' Contrôles ActiveX : Autorisations d'un contrôle ActiveX.

Code de signature

La signature de code est conçue pour identifier la source du code, et pour garantir que le code n'a pas changé depuis lequel il a été signé.Selon les paramètres de sécurité de navigateur, les utilisateurs peuvent être prévenus avant que le code peut être téléchargé.Les utilisateurs peuvent choisir de faire confiance à certains propriétaires ou sociétés de certificat, auquel cas le code signé par ceux approuvés sera téléchargé sans avertissement.Le code est signé numériquement pour éviter de la falsification.

Assurez-vous que votre code final est signé afin que votre contrôle puisse être automatiquement téléchargé sans afficher des messages d'avertissement d'approbation.Pour plus d'informations sur la façon de signer le code, consultez la documentation sur Authenticode dans ActiveX Kit de développement logiciel et consultez l' Signer un fichier CAB.

En fonction de les paramètres d'approbation et de niveau de sécurité de navigateur, un certificat peut être affiché pour identifier la personne ou la société de signature.Si le niveau de sécurité a la valeur none, ou si le propriétaire signé du certificat du contrôle est approuvé, un certificat ne sera pas affiché.Consultez l' Niveaux de sécurité de navigateur Internet Explorer et comportement de contrôle pour plus d'informations sur la façon dont la configuration de sécurité de navigateur détermine si votre contrôle est téléchargé et un certificat est affiché.

Le code de garanties de signature numérique n'a pas changé comme il a été signé.Un hachage du code sont effectuées et incorporées dans le certificat.Ces hachage ultérieurement sont comparées à un hachage du code managé après le code est téléchargé mais avant son exécution.Les sociétés telles que Verisign peuvent fournir privé et des clés publiques nécessaires pour archiver le code.ActiveX Kit de développement logiciel est fourni avec MakeCert, un utilitaire pour créer des certificats de test.

Gérer la palette

Les conteneurs déterminent la palette et la rendent disponible en tant que propriété ambiante, DISPID_AMBIENT_PALETTE.Un conteneur (par exemple, Internet Explorer) sélectionne une palette qui est utilisée par tous les contrôles ActiveX sur une page pour déterminer leur propre palette.Cela empêché le scintillement d'affichage et présente une apparence cohérente.

Un contrôle peut remplacer OnAmbientPropertyChange pour traiter la notification des modifications à la palette.

Un contrôle peut remplacer OnGetColorSet pour retourner un jeu de couleurs pour dessiner la palette.Les conteneurs utilisent la valeur de retour pour déterminer si un contrôle est compte le paramètre palette.

Sous des règles d'OCX 96, un contrôle doit toujours effectuer sa palette d'arrière-plan.

Les conteneurs plus anciens qui n'utilisent pas la propriété ambiante de la palette enverront WM_QUERYNEWPALETTE et des messages d' WM_PALETTECHANGED .Un contrôle peut remplacer OnQueryNewPalette et OnPaletteChanged pour gérer ces messages.

Niveaux de sécurité de navigateur Internet Explorer et comportement de contrôle

Un navigateur a des options pour le niveau de sécurité, configurables par l'utilisateur.Étant donné que les pages Web peuvent contenir du contenu actif qui peut potentiellement nuire à l'ordinateur d'un utilisateur, les navigateurs permettent à l'utilisateur de sélectionner des options pour le niveau de sécurité.Selon la façon dont un navigateur implémente des niveaux de sécurité, un contrôle ne peut être téléchargé du tout, ou affichera un certificat ou un message d'avertissement pour permettre à l'utilisateur de choisir au moment de l'exécution si télécharger le contrôle.Le comportement des contrôles ActiveX sous la élevée, la prise en charge, et les niveaux bas de sécurité sur Internet Explorer est répertorié ci-dessous.

941zhks9.collapse_all(fr-fr,VS.110).gifMode de haute sécurité

  • Les contrôles non signés ne seront pas téléchargés.

  • Les contrôles signés affichent un certificat si non fiable (un utilisateur peut choisir une option d'approuver toujours au code de ce propriétaire du certificat dorénavant).

  • Seuls les contrôles marqués comme sécurisée auront les données persistantes et/ou sont scriptable.

941zhks9.collapse_all(fr-fr,VS.110).gifMode moyen de sécurité

  • Les contrôles non signés affichent un avertissement avant de télécharger.

  • Les contrôles signés affichent un certificat si non fiables.

  • Les contrôles non marqués comme sécurisée affichent un avertissement.

941zhks9.collapse_all(fr-fr,VS.110).gifLe mode de sécurité

  • Les contrôles sont téléchargés sans avertissement.

  • Script et la persistance se produisent sans avertissement.

Voir aussi

Référence

Contrôles ActiveX MFC : Autorisations d'un contrôle ActiveX

Concepts

Tâches de programmation Internet MFC

Concepts de programmation Internet MFC