Você está offline; aguardando reconexão

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

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
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 326652.
Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 190670.

NESTA TAREFA

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.

back to the top

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 .
back to the top

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.
back to the top

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.
back to the top

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.
back to the top

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.
back to the top

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:
    151771LICREQST.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.
back to the top
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
241126INFO: adicionar dinamicamente UserControls que requerem licenças de tempo de execução
188577COMO: Qual é a licenças coleção usado para?
190670COMO: Adicionar dinamicamente controles a um formulário com o Visual Basic 6.0
back to the top

Propriedades

ID do Artigo: 326651 - Última Revisão: 12/06/2006 23:18:59 - Revisão: 3.3

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB326651 KbMtpt
Comentários
or(Math.random() * 3)).toString(16)); var m = document.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);