Partilhar via


Controles de ActiveX MFC: Licenciamento um controle ActiveX

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

Este artigo aborda os seguintes tópicos:

  • Visão geral do controle de ActiveX de licenciamento

  • Criando um controle licenciado

  • Suporte de licenciamento

  • Personalizando o licenciamento de um controle ActiveX

ActiveX controles que implementam licenciamento permitem que você, como desenvolvedor de controle, para determinar como outras pessoas usará o controle ActiveX.Fornecer o comprador de controle com o controle e.Arquivo LIC. para, com o contrato que o comprador pode distribuir o controle, mas não o.LIC. para arquivo, 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 de ActiveX de licenciamento

Para fornecer suporte de licenciamento para controles de ActiveX de COleObjectFactory classe fornece uma implementação para várias funções na IClassFactory2 interface: IClassFactory2::RequestLicKey, IClassFactory2::GetLicInfo, e IClassFactory2::CreateInstanceLic.Quando o desenvolvedor do aplicativo contêiner faz uma solicitação para criar uma instância do controle, uma chamada para GetLicInfo é feita para verificar se o controle.LIC. para arquivo está presente.Se o controle é licenciado, uma instância do controle pode ser criada e colocada no recipiente.Após o desenvolvedor construindo um aplicativo de contêiner, outra chamada de função, desta vez para RequestLicKey, é feita.Esta função retorna uma chave de licença (uma seqüência de caracteres simples) para o aplicativo de contêiner.A chave retornada é incorporada no aplicativo.

A figura abaixo demonstra a verificação da licença de um controle de ActiveX que será usado durante o desenvolvimento de um aplicativo de contêiner.Como mencionado anteriormente, o desenvolvedor do aplicativo contêiner deve ter adequada.Arquivo de licença para / instalado na máquina de desenvolvimento para criar uma instância do controle.

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

Verificação de desenvolvimento do controle ActiveX licenciado

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

Quando o aplicativo é iniciado, uma instância do controle geralmente precisa ser criado.O contêiner realiza isso fazendo uma chamada para CreateInstanceLic, passando a chave de licença incorporado como um parâmetro.Uma comparação de seqüência 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.LIC. para arquivo não precisa estar presente na máquina do usuário de controle.

Verificação de um controle ActiveX licenciada durante a execução

Verificação de execução do controle ActiveX licenciado

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

Criando um controle licenciado

Quando você usar o Assistente de controle de ActiveX para criar a estrutura de controle, é fácil incluir suporte de licenciamento.Quando você especificar que o controle deve ter uma licença de tempo de execução, o Assistente de controle de ActiveX adiciona código para a classe de controle 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 de ActiveX posteriormente neste artigo.

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

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

O Assistente de controle de ActiveX agora gera uma estrutura de controle de ActiveX inclui suporte básico de 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 de ActiveX para adicionar suporte de licenciamento para um controle ActiveX, o Assistente de controle de ActiveX adiciona código que declara e implementa o recurso de licenciamento é adicionado ao cabeçalho do controle e implementação de arquivos.Este código é composto de um VerifyUserLicense função de membro e um GetLicenseKey função de membro, substituir as implementações do padrão encontradas no COleObjectFactory .Essas funções recuperar e verificar a licença do controle.

ObservaçãoObservação

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

Essas funções de membro são:

  • VerifyUserLicense

    Verifica o controle permite que a utilização de tempo de design, verificando o sistema a presença do arquivo de licença do controle.Essa função é chamada pela estrutura como parte do processamento IClassFactory2::GetLicInfo e IClassFactory::CreateInstanceLic.

  • GetLicenseKey 

    Solicita uma chave exclusiva a DLL de controle.Essa chave é incorporada no aplicativo de contêiner e usada posteriormente, em conjunto com VerifyLicenseKey, para criar uma instância do controle.Essa função é chamada pela estrutura como parte do processamento IClassFactory2::RequestLicKey.

  • VerifyLicenseKey 

    Verifica se a chave incorporada e do controle exclusivo são iguais.Isso permite que o contêiner criar uma instância do controle para seu uso.Essa função é chamada pela estrutura como 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 seqüência de caracteres.Para obter mais informações, consulte Personalizando o licenciamento de um controle de ActiveX, posteriormente neste artigo.

9dwf178y.collapse_all(pt-br,VS.110).gifModificações do arquivo de cabeçalho

O Assistente de controle de ActiveX coloca o código a seguir no arquivo de cabeçalho de controle.Neste exemplo, duas funções de membro de CSampleCtrldo objeto factory são declaradas, que verifica a presença do controle.Arquivo de licença para / 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)

9dwf178y.collapse_all(pt-br,VS.110).gifModificações do arquivo de implementação

O Assistente de controle de ActiveX coloca as duas instruções a seguintes no arquivo de implementação de controle 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çãoObservação

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

O Assistente de controle de ActiveX coloca o código a seguir no arquivo de implementação de controle para definir a classe de controle 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, o Assistente de controle de ActiveX modifica o projeto de controle.Arquivo IDL.O licenciado palavra-chave é adicionada à declaração coclass do controle, como 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 como funções de membro virtual da classe de fábrica do controle, você pode personalizar o comportamento do controle licenciamento.

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

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

ObservaçãoObservação

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

Para uma discussão adicional de problemas de licenciamento, consulte problemas de licenciamento no Atualizando um controle existente do ActiveX.

Consulte também

Referência

MFC ActiveX Control Wizard

Conceitos

Controles de ActiveX do MFC