ID do artigo: 326651 - Última revisão: quarta-feira, 6 de dezembro de 2006 - Revisão: 3.3

Como adicionar dinamicamente controles ActiveX que exigem licenças de tempo de execução no Visual Basic .NET ou no Visual Basic 2005

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo passo a passo descreve como adicionar manualmente uma licença de tempo de execução para um controle ActiveX que é dinamicamente criado no Visual Basic .NET ou no Visual Basic 2005. Na versão 6 do Visual Basic, você pode adicionar manualmente licenças para a coleção de licença usando o método Licenses.Add() . Para obter mais informações sobre o que License.Add() faz no Visual Basic 6, consulte a seção "Referências" deste artigo.

No Visual Basic .NET ou no Visual Basic 2005, a coleção de licenças não existe. Você deve incorporar as informações da licença no controle.

Este artigo presume que o controle requer a licença de tempo de execução está em MyProject.OCX e é chamado MyLicensedControl. MyProject.OCX está localizado em C:\Windows\System32.

Criar um novo Visual Basic .NET ou projeto do Visual Basic 2005

  1. Clique em Iniciar , aponte para Todos os programas , aponte para Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 e, em seguida, clique em Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 .
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Project Types , clique em Windows Application em modelos e, em seguida, clique em OK .

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types .

Criar assemblies de interoperabilidade ActiveX

  1. Clique em Iniciar , aponte para Todos os programas , aponte para Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 , aponte para Ferramentas do Visual Studio .NET ou Visual Studio 2005 Tools e, em seguida, clique em Visual Studio .NET Command Prompt ou Visual Studio 2005 Command Prompt .
  2. Para criar os dois assemblies de interoperabilidade que você deve ter, digite o seguinte comando:
    /out:C:\temp\AxMyProject.dll aximp "C:\Windows\System32\MyProject.ocx"
    AxMyProject.dll é para interoperabilidade de AxHost. MyProject.dll é para COM Interop.

Criar dinamicamente o controle

  1. No menu Project , clique em Add Reference .
  2. Clique em Procurar e selecione os assemblies de interoperabilidade do controle ActiveX que você acabou de criar (eles devem estar em C:\Temp).
  3. Adicionar AxMyProject.dll e MyProject.dll; adicionar esses arquivos copia-los localmente.
  4. Adicione um controle Button ao formulário.
  5. Clique duas vezes o botão para localizar o código para o método de Evento de clique de botão .
  6. No método de Evento de clique de botão , cole o seguinte código:
      Dim myControl As New AxMyProject.AxMyLicensedControl()
    						
    este cria uma nova instância do controle por meio de AxHost.

    Observação : não criar uma nova instância do controle por meio de COM (MyProject.MyLicensedControl novo), porque isso não funcionará no formulário, e você não pode adicionar facilmente a licença.

Adicionar a licença ao controle

  1. Determinar e observe a chave de licença de tempo de execução para o controle. Para MyLicensedControl , a chave de licença é "gnvlslnjskvlmlgnnimh".
  2. No método de Evento de clique de botão , cole o código a seguir abaixo Dim myControl como novo AxMyProject.AxMyLicensedControl() :
            Dim f As System.Reflection.FieldInfo
            f = GetType(AxHost).GetField("licenseKey", _ 
                Reflection.BindingFlags.NonPublic _ 
                Or Reflection.BindingFlags.Instance)
            f.SetValue(myControl, "gnvlslnjskvlmlgnnimh")
    					
    este código insere a licença de tempo de execução para o controle. Ele cria uma instância de FieldInfo , que faz parte do conjunto de propriedades OCXState . Este conjunto de propriedades está cheio de informações de controle ActiveX específicas. Nesse caso, você está obtendo o campo licenseKey e defini-la para myControl . Você deve fazer isso para cada instância de qualquer controle ActiveX que requer uma licença de tempo de execução.

Adicionar o controle ao formulário

  1. Adicionar o controle à coleção de controles do formulário e, em seguida, mostrar o controle. Para fazer isso, você pode usar o código a seguir:
            Controls.Add(myControl)
            myControl.Show()
    						
    colar esse código no método de Evento de clique de botão , depois de "f.SetValue (myControl,"gnvlslnjskvlmlgnnimh")" e antes da linha "End Sub".

    Observação : se a licença não é adicionada ao controle e a licença é necessária, Controls.Add falhará. Controls.Add executa o código que contém essa validação de licença. Quando você tentar e executar Controls.Add , você vê o seguinte erro no modo de depuração:
    Uma exceção sem tratamento do tipo 'System.ComponentModel.LicenseException' ocorreu em system.windows.forms.dll informações adicionais: você não tem uma licença para usar este controle ActiveX.
    Ou, em tempo de execução, você pode ver a seguinte mensagem de erro semelhante:
    Ocorreu uma exceção sem tratamento em seu aplicativo. Você não tem uma licença para usar este controle ActiveX.
  2. Pressione F5 para executar o projeto.
  3. Clique no botão para adicionar o controle ActiveX ao formulário.

Solução de problemas

importante : Observe o seguinte sobre esta operação:
  • Você deve adicionar a licença para cada ocorrência de cada ActiveX controle requer uma licença de tempo de execução. Por exemplo, se você criar uma segunda instância do MyLicensedControl , você precise adicionar a licença também a essa instância.
  • Certifique-se que você possui a chave de licença correto para seu controle. Determinar a chave de licença correto é específico para o controle: Para obter informações adicionais sobre como determinar a chave, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    151771  (http://support.microsoft.com/kb/151771/EN-US/ ) LICREQST.EXE solicitando uma chave de licença de um objeto
    Como alternativa, você pode usar Licenses.Add para o controle no Visual Basic 6 em um computador que possui a licença no registro. Licenses.Add retorna a licença de tempo de execução que ele adicionado como uma seqüência de caracteres; em seguida, você pode usar Debug.Print para obter a chave de licença.

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
241126  (http://support.microsoft.com/kb/241126/EN-US/ ) INFO: adicionar dinamicamente UserControls que requerem licenças de tempo de execução
188577  (http://support.microsoft.com/kb/188577/EN-US/ ) COMO: Qual é a licenças coleção usado para?
190670  (http://support.microsoft.com/kb/190670/EN-US/ ) COMO: Adicionar dinamicamente controles a um formulário com o Visual Basic 6.0

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB326651 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 326651  (http://support.microsoft.com/kb/326651/en-us/ )