Os controles ActiveX MFC: Um controle ActiveX de licenciamento

Suporte de licenciamento, um recurso opcional de controles ActiveX, permite controlar quem é capaz de usar ou distribuir o controle.(Para discussão adicional sobre problemas de licenciamento, consulte problemas de licenciamento Atualizar um controle ActiveX existente.)

Este artigo aborda os seguintes tópicos:

  • Visão geral do controle ActiveX de licenciamento

  • Criando um controle licenciado

  • Suporte de licenciamento

  • Personalizando o licenciamento de um controle ActiveX

sistema autônomo controles ActiveX que implementam licenciamento permitem que você, sistema autônomo o desenvolvedor de controle, para determinar sistema autônomo outras pessoas usará o controle ActiveX.Você pode fornecer o comprador de controle com o controle e arquivo .LIC, com o contrato que o comprador pode distribuir o controle, mas não o arquivo .LIC, com um aplicativo que usa o controle.Isso impede que os usuários desse aplicativo de gravar novos aplicativos que usam o controle, sem primeiro a controle de licenciamento.

Visão geral do controle ActiveX de licenciamento

Para oferecer suporte à licença de controles ActiveX, a COleObjectFactory classe fornece uma implementação para várias funções no IClassFactory2 interface: IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo, and IClassFactory2::CreateInstanceLic.Quando o desenvolvedor do aplicativo contêiner faz uma solicitação para criar uma instância do controle, uma telefonar para GetLicInfo é feita para verificar se o arquivo de controle de .LIC está presente. Se o controle é licenciado, uma instância do controle pode ser criada e colocada no contêiner.Depois do desenvolvedor tenha terminado a construção do aplicativo contêiner, outra telefonar de função, desta vez para RequestLicKey, é feita. Esta função retorna uma chave de licença (uma seqüência de caractere simples) para o aplicativo contêiner.A chave retornada, em seguida, é incorporada no aplicativo.

A figura a seguir demonstra a verificação de licença de um controle ActiveX que será usado durante o desenvolvimento de um aplicativo de contêiner.sistema autônomo mencionado anteriormente, o desenvolvedor do aplicativo contêiner deve ter o arquivo .LIC correto instalado na computador de desenvolvimento para criar uma instância do controle.

Verificação de um controle ActiveX do licenciado durante o desenvolvimento

O processo próximo, mostrado na figura a seguir, ocorre quando o usuário participante executar o aplicativo contêiner.

Quando o aplicativo é iniciado, uma instância do controle geralmente precisa ser criado.O contêiner realiza isso fazendo uma telefonar para CreateInstanceLic, passando a chave de licença incorporado sistema autônomo um parâmetro. Uma comparação de seqüências de caracteres, em seguida, é feita entre a chave de licença incorporado e a cópia do controle da chave de licença.Se a correspondência for bem-sucedida, uma instância do controle é criada e o aplicativo continua sendo executado normalmente.Observe que o arquivo .LIC precisa ser presente na computador do usuário de controle.

Verificação de um controle ActiveX do licenciado durante a execução

Controle de licenciamento consiste em dois componentes básicos: código específico na DLL de implementação do controle e o arquivo de licença.O código é composto de dois (ou possivelmente três) chamadas de função e uma seqüência de caractere, de agora em diante chamado de uma "string de licença," que contém um aviso de direitos autorais.Essas chamadas e a string de licença são encontrados no arquivo de implementação (.CPP) de controle.O arquivo de licença gerado pelo Assistente do controle ActiveX, é um arquivo de texto com uma demonstrativo de direitos autorais.Ele é denominado usando o nome do projeto com uma extensão .LIC, por exemplo SAMPLE.LIC.Um controle Licenciado deve ser acompanhado pelo arquivo de licença se for necessário o uso de time de design.

Criando um controle licenciado

Quando você usa o Assistente de controle ActiveX para criar a estrutura de controle, é fácil incluir o suporte de licenciamento.Quando você especifica que controle ActiveX deve ter um em time de execução licença, o Assistente para controle ActiveX de ActiveX adiciona código à classe de controle ActiveX para oferecer suporte ao licenciamento.O código consiste em funções que usam um arquivo de chave de licença para verificação da licença.Essas funções também podem ser modificadas para personalizar o controle de licenciamento.Para obter mais informações sobre personalização de licença, consulte Personalizando o licenciamento de um controle ActiveX neste artigo.

Para adicionar suporte a licenciamento com o Assistente de controle ActiveX quando você criar seu projeto de controle

  • Use as instruções no Criando um controle ActiveX do MFC.The Configurações do aplicativo página do Assistente de controle ActiveX contém a opção para criar o controle com a licença de time de execução.

O Assistente para controle de ActiveX agora gera uma estrutura de controle ActiveX que inclui o suporte básico do licenciamento.Para obter uma explicação detalhada do código de licenciamento, consulte o próximo tópico.

Suporte de licenciamento

Quando você usar o Assistente de controle ActiveX para adicionar suporte de licenciamento para um controle ActiveX, o Assistente para controle de ActiveX adiciona código que declara e implementa o recurso de licenciamento será adicionado ao controle de cabeçalho e implementação arquivos.Esse código é composto por um VerifyUserLicense função de membro e um GetLicenseKey função de membro, substituir as implementações padrão encontradas no COleObjectFactory .Essas funções recuperar e verificar a licença do controle.

Observação:

Uma terceira função de membro, VerifyLicenseKey não é gerado pelo Assistente de controle ActiveX, mas pode ser substituído para personalizar o comportamento de verificação da chave de licença.

Essas funções de membro são:

  • VerifyUserLicense

    Verifica que o controle permite a utilização de time de design, marcando o sistema para verificar a presença do arquivo de licença de controle.Essa função é chamada pela estrutura sistema autônomo parte do processamento IClassFactory2::GetLicInfo and IClassFactory::CreateInstanceLic.

  • GetLicenseKey 

    Solicita uma chave exclusiva que a DLL de controle.Esta chave é incorporado no aplicativo contêiner e posterior, usado em conjunto com VerifyLicenseKey, para criar uma instância do controle. Essa função é chamada pela estrutura sistema autônomo parte do processamento IClassFactory2::RequestLicKey.

  • VerifyLicenseKey 

    Verifica se a chave incorporada e chave exclusiva do controle são os mesmos.Isso permite que o contêiner criar uma instância do controle para seu uso.Essa função é chamada pela estrutura sistema autônomo parte do processamento IClassFactory2::CreateInstanceLic e pode ser substituída para fornecer verificação personalizada da chave de licença.A implementação padrão executa uma comparação de cadeia de caracteres de caracteres.Para obter mais informações, consulte Personalizando o licenciamento de um controle ActiveX, neste artigo.

Modificações do arquivo de cabeçalho

O Assistente para controle ActiveX de ActiveX coloca o código a seguir no arquivo de cabeçalho do controle ActiveX.Neste exemplo, duas funções de membro de CSampleCtrldo objeto factory são declarados, que verifica a presença do arquivo .LIC de controle e outra que recupere a chave de licença para ser usado no aplicativo que contém o controle:

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

Modificações do arquivo de implementação

O Assistente para controle ActiveX de ActiveX coloca as duas instruções a seguir no arquivo de implementação de controle ActiveX para declarar o nome de arquivo de licença e a string de licença:

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

static const WCHAR BASED_CODE _szLicString[] = L"Copyright (c) 2006 ";
Observação:

Se você modificar szLicString de qualquer maneira, você também deve modificar a primeira linha no arquivo de controle .LIC ou de licenciamento não funcionará corretamente.

O Assistente para controle ActiveX de ActiveX coloca o código a seguir no arquivo de implementação de controle ActiveX para definir VerifyUserLicense e GetLicenseKey funções:

// 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);
}

Finalmente, a Assistente de controle ActiveX modifica o arquivo .idl de controle do projeto.The licenciado palavra-chave é adicionada à declaração coclass do controle, sistema autônomo no exemplo a seguir:

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

Personalizando o licenciamento de um controle ActiveX

Porque VerifyUserLicense, GetLicenseKey, e VerifyLicenseKey são declaradas sistema autônomo funções de membro virtual da classe de fábrica de controle, é possível personalizar o comportamento de licenciamento do controle.

Por exemplo, você pode fornecer vários níveis de licenciamento para o controle substituindo o VerifyUserLicense ou VerifyLicenseKey funções de membro. Dentro dessa função você pode ajustar quais propriedades ou métodos são expostos aos usuário de acordo com o nível de licença que é detectado.

Você também pode adicionar código à VerifyLicenseKey Falha na função que fornece um método personalizado para informar ao usuário controlar a criação. Por exemplo, no seu VerifyLicenseKey caixa de função de membro, você poderia exibir uma mensagem informando que o controle não pôde inicializar e por quê.

Observação:

Outra maneira de personalizar a verificação de licença do controle ActiveX é verificar o banco de dados de inscrição para uma chave do inscrição específica, em vez de chamada AfxVerifyLicFile.Para obter um exemplo da implementação do padrão, consulte o Modificações do arquivo de implementação seção deste artigo.

Para adicional sobre problemas de licenciamento, consulte problemas de licenciamento no Atualizar um controle ActiveX existente.

Consulte também

Conceitos

Controles do ActiveX MFC

Referência

Assistente de controle ActiveX MFC