Partager via


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

La prise en charge d'autorisation, une fonctionnalité en option des contrôles ActiveX, vous permet au contrôle qui peut utiliser ou distribuer le contrôle.(Pour l'examen supplémentaire des problèmes d'attribution de licences, consultez les problèmes d'attribution de licences dans mettre à niveau un contrôle ActiveX existant.)

Cet article explique les rubriques suivantes :

  • Vue d'ensemble de l'autorisation contrôle ActiveX

  • Créer un contrôle sous licence

  • Prise en charge d'autorisation

  • Personnaliser l'attribution d'une licence d'un contrôle ActiveX

Les contrôles ActiveX qui implémentent l'attribution d'une licence vous permettent, en tant que développeur de contrôles, pour déterminer la façon dont d'autres personnes utilisent le contrôle ActiveX.Vous fournissez utiles pour l'de le contrôle et le fichier de .LIC, avec le contrat que l'acheteur peut distribuer le contrôle, mais avec pas le fichier de .LIC, avec une application qui utilise le contrôle.Cela empêché les utilisateurs de cette application d'écrire dans les nouvelles applications qui utilisent le contrôle, sans le premier attribution d'une licence le contrôle de votre part.

Vue d'ensemble de l'autorisation contrôle ActiveX

Pour fournir une prise en charge de la licence des contrôles ActiveX, la classe de COleObjectFactory fournit une implémentation pour plusieurs fonctions de l'interface d' IClassFactory2 : IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo, et IClassFactory2::CreateInstanceLic.Lorsque le développeur d'application conteneur fait une demande de créer une instance du contrôle, un appel à GetLicInfo permet de vérifier que le fichier du contrôle .LIC est présent.Si le contrôle est autorisé, une instance du contrôle peut être créée et placée dans le conteneur.Une fois que le développeur n'a pas terminé de construire l'application conteneur, un autre appel de fonction, cette fois à RequestLicKey, est passé.Cette fonction retourne licence (une chaîne simple) à l'application conteneur.La clé retournée est ensuite incorporée dans l'application.

L'illustration suivante présente la vérification de licence d'un contrôle ActiveX qui sera utilisé lors de le développement d'une application conteneur.Comme mentionné précédemment, le développeur d'application conteneur doit avoir le fichier approprié de .LIC installé sur l'ordinateur de développement pour créer une instance du contrôle.

Vérification d'un contrôle ActiveX autorisé pendant le développement

Vérification du développement de contrôles ActiveX sous licence

Le processus suivant, représenté dans l'illustration suivante, se produit lorsque l'utilisateur final exécute l'application conteneur.

Lorsque l'application est lancée, une instance de contrôle des besoins généralement d'être créé.Le conteneur effectue ceci en appelant à CreateInstanceLic, en passant la clé de licence incorporé comme paramètre.Une comparaison de chaînes est ensuite effectuée copie entre licence incorporé et du contrôle la propre de licence.Si la correspondance réussit, la création d'une instance du contrôle et l'application continue à fonctionner normalement.Notez que le fichier de .LIC n'a pas besoin d'être présent sur l'ordinateur de l'utilisateur.

Vérification d'un contrôle ActiveX autorisé pendant l'exécution

Vérification de l'exécution de contrôles ActiveX sous licence

L'attribution d'une licence de contrôle comprend deux composants de base : le code spécifique dans la DLL de contrôle d'implémentation et le fichier de licence.Le code est composé de deux (ou peut-être trois) appels de fonction et d'une chaîne de caractères, ci-après appelée comme une « chaîne de licence », contenant un texte de copyright.Ces appels et la chaîne de licence figurent dans le fichier de contrôle de l'implémentation (.CPP).Le fichier de licence, généré par l'Assistant Contrôle ActiveX, est un fichier texte avec une déclaration de copyright.Elle est nommée à l'aide de le nom du projet avec une extension de .LIC, par exemple SAMPLE.LIC.Un contrôle sous licence doit être accompagné du fichier de licence si l'utilisation au moment de le design est nécessaire.

Créer un contrôle sous licence

Lorsque vous utilisez l'Assistant Contrôle ActiveX pour créer l'infrastructure de contrôle, il est facile de comprendre la prise en charge de l'attribution d'une licence.Lorsque vous spécifiez que le contrôle doit avoir une licence utilisateur, l'Assistant Contrôle ActiveX ajoute du code à la classe de contrôle à l'attribution d'une licence de stockage.Le code se compose des fonctions qui utilisent une clé et un fichier de licence pour la vérification de licence.Ces fonctions peuvent également être modifiées pour personnaliser l'attribution d'une licence de contrôle.Pour plus d'informations sur la personnalisation de licence, consultez Personnaliser l'attribution d'une licence d'un contrôle ActiveX ultérieurement dans cet article.

Pour ajouter la prise en charge de l'autorisation avec l'Assistant Contrôle ActiveX lorsque vous créez votre projet de contrôle

  • Utilisez l'instruction dans créer un contrôle ActiveX MFC.La page Paramètres de l'application de l'Assistant Contrôle ActiveX contient la possibilité de créer le contrôle avec la licence utilisateur.

L'Assistant Contrôle ActiveX génère maintenant une infrastructure du contrôle ActiveX qui inclut la prise en charge de base d'attribution de licence.Pour une explication détaillée de code de la licence, consultez la rubrique suivante.

Prise en charge d'autorisation

Lorsque vous utilisez l'Assistant Contrôle ActiveX pour ajouter la prise en charge de l'attribution d'une licence à un contrôle ActiveX, l'Assistant Contrôle ActiveX ajoute du code qui déclare et implémente la fonction de la licence est ajouté à l'en-tête et les fichiers d'implémentation du contrôle.Ce code est composé d'une fonction membre d' VerifyUserLicense et d'une fonction membre d' GetLicenseKey , qui remplacent les implémentations par défaut contenues dans COleObjectFactory .Ces fonctions récupèrent et vérifier la licence de contrôle.

[!REMARQUE]

Une troisième fonction membre, VerifyLicenseKey n'est pas générée par l'Assistant Contrôle ActiveX, mais peut être substituée pour personnaliser le comportement de vérification de licence.

Ces fonctions membres sont :

  • VerifyUserLicense

    Vérifie que le contrôle permet l'utilisation au moment de le design en activant le système pour la présence du fichier de licence de contrôle.Cette fonction est appelée par l'infrastructure dans le cadre de le traitement IClassFactory2::GetLicInfo et IClassFactory::CreateInstanceLic.

  • GetLicenseKey 

    Demande une clé unique de la DLL du contrôle.Cette clé est incorporée dans l'application conteneur et versions ultérieures utilisée, conjointement avec VerifyLicenseKey, pour créer une instance du contrôle.Cette fonction est appelée par l'infrastructure dans le cadre de le traitement IClassFactory2::RequestLicKey.

  • VerifyLicenseKey 

    Vérifie que la clé incorporée et la clé unique du contrôle sont identiques.Cela permet au conteneur pour créer une instance du contrôle pour son utilisation.Cette fonction est appelée par l'infrastructure dans le cadre de le traitement IClassFactory2::CreateInstanceLic et peut être substituée pour fournir la vérification personnalisée de licence.L'implémentation par défaut effectue une comparaison de chaînes.Pour plus d'informations, consultez Personnaliser l'attribution d'une licence d'un contrôle ActiveX, ultérieurement dans cet article.

9dwf178y.collapse_all(fr-fr,VS.110).gifModifications apportées au fichier d'en-tête

L'Assistant Contrôle ActiveX place le code suivant dans le fichier d'en-tête du contrôle.Dans cet exemple, deux fonctions membres de l'objet factory des CSampleCtrl déclarées, un qui vérifie la présence du fichier du contrôle .LIC et un autre qui récupère le code licence à utiliser dans l'application contenant le contrôle :

BEGIN_OLEFACTORY(CMyAxUICtrl)        // Class factory and guid
   virtual BOOL VerifyUserLicense();
   virtual BOOL GetLicenseKey(DWORD, BSTR FAR*);
END_OLEFACTORY(CMyAxUICtrl)

9dwf178y.collapse_all(fr-fr,VS.110).gifModifications apportées au fichier d'implémentation

L'Assistant Contrôle ActiveX place les deux instructions suivantes dans le fichier d'implémentation du contrôle pour déclarer le nom de fichier de licence et pour autoriser la chaîne :

static const TCHAR BASED_CODE _szLicFileName[] = _T("NVC_MFC_AxUI.lic");

static const WCHAR BASED_CODE _szLicString[] = L"Copyright (c) 2006 ";

[!REMARQUE]

Si vous modifiez szLicString d'une manière, vous devez également modifier la première ligne dans le fichier du contrôle .LIC ou l'attribution d'une licence ne fonctionnera pas correctement.

L'Assistant Contrôle ActiveX place le code suivant dans le fichier d'implémentation du contrôle pour définir VerifyUserLicense des classes et des fonctions de contrôle d' GetLicenseKey :

// CMyAxUICtrl::CMyAxUICtrlFactory::VerifyUserLicense -
// Checks for existence of a user license

BOOL CMyAxUICtrl::CMyAxUICtrlFactory::VerifyUserLicense()
{
   return AfxVerifyLicFile(AfxGetInstanceHandle(), _szLicFileName, _szLicString);
}

// CMyAxUICtrl::CMyAxUICtrlFactory::GetLicenseKey -
// Returns a runtime licensing key

BOOL CMyAxUICtrl::CMyAxUICtrlFactory::GetLicenseKey(DWORD /*dwReserved*/,
   BSTR FAR* pbstrKey)
{
   if (pbstrKey == NULL)
      return FALSE;

   *pbstrKey = SysAllocString(_szLicString);
   return (*pbstrKey != NULL);
}

Enfin, ActiveX Control Wizard modifie le fichier .IDL de contrôle du projet.Le mot clé de licensed est ajouté à la déclaration de la coclasse du contrôle, comme dans l'exemple suivant :

[ uuid(913E450B-E720-4C71-BCDF-71C96EE98FEB), licensed,
  helpstring("MyAxUI Control"), control ]
coclass NVC_MFC_AxUI

Personnaliser l'attribution d'une licence d'un contrôle ActiveX

Étant donné qu' VerifyUserLicense, GetLicenseKey, et VerifyLicenseKey sont déclarés comme des fonctions membres virtuelles de la classe de contrôle de fabrique, vous pouvez personnaliser le comportement de l'attribution d'une licence du contrôle.

Par exemple, vous pouvez fournir plusieurs niveaux de l'attribution d'une licence pour le contrôle en substituant les fonctions membres d' VerifyUserLicense ou d' VerifyLicenseKey .À l'intérieur de cette fonction vous pouvez ajuster les propriétés ou méthodes sont exposées à l'utilisateur en fonction de le niveau de licence que vous avez détecté.

Vous pouvez également ajouter du code à la fonction d' VerifyLicenseKey qui fournit une méthode personnalisée pour notifier l'utilisateur que la création de contrôle a échoué.Par exemple, dans la fonction membre d' VerifyLicenseKey vous pouvez afficher un message qui indique que le contrôle n'est pas initialisé et pourquoi.

[!REMARQUE]

Une autre façon de personnaliser le contrôle de licence de contrôle ActiveX est d'activer la base de données d'inscription pour une clé de Registre spécifique, au lieu d'appeler AfxVerifyLicFile.Pour obtenir un exemple de l'implémentation par défaut, consultez la section de Modifications apportées au fichier d'implémentation de cet article.

Pour l'examen supplémentaire des problèmes d'attribution de licences, consultez les problèmes d'attribution de licences dans mettre à niveau un contrôle ActiveX existant.

Voir aussi

Référence

Contrôle ActiveX MFC (Assistant)

Concepts

Contrôles ActiveX MFC