Artigo: 326651 - Última revisão: quarta-feira, 6 de Dezembro de 2006 - Revisão: 3.3

Como adicionar dinamicamente controlos ActiveX que requerem 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 | Reduzir tudo

Sumário

Este artigo passo a passo descreve como adicionar manualmente uma licença de tempo de execução a um controlo ActiveX que é criado dinamicamente no Visual Basic .NET ou no Visual Basic 2005. No Visual Basic versão 6, pode adicionar manualmente licenças ao conjunto de licenças utilizando o método Licenses.Add() . Para obter mais informações sobre o que faz License.Add() no Visual Basic 6, consulte a secção "Referências" deste artigo.

No Visual Basic .NET ou no Visual Basic 2005, o conjunto de licenças já não existe. É necessário incorporar as informações de licença no controlo.

Este artigo pressupõe que o controlo requer a licença de tempo de execução está a ser MyProject.OCX e chama MyLicensedControl. MyProject.OCX está localizado na C:\Windows\System32.

Criar um novo Visual Basic .NET ou Visual Basic 2005 Project

  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 ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Na caixa de diálogo Novo projecto , clique em Projectos do Visual Basic em Project Types , clique em Windows Application em Templates e, em seguida, clique em OK .

    Nota No Visual Studio 2005, clique em Visual Basic em Project Types .

Criar ActiveX Interop Assemblies

  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 linha de comandos do Visual Studio .NET ou Visual Studio 2005 linha de comandos .
  2. Para criar as assemblagens de interoperabilidade dois tem de ter, escreva o seguinte comando:
    /out:C:\temp\AxMyProject.dll aximp "C:\Windows\System32\MyProject.ocx"
    AxMyProject.dll destina AxHost Interop. MyProject.dll é para interoperabilidade.

Criar dinamicamente o controlo

  1. No menu projecto , clique em Add Reference .
  2. Clique em Procurar e, em seguida, seleccione as assemblagens de interoperabilidade de controlo ActiveX que acabou de criar (devem estar em C:\Temp).
  3. Adicionar AxMyProject.dll e MyProject.dll; adicionar estes ficheiros copia-os localmente.
  4. Adicione um controlo de botão ao formulário.
  5. Faça duplo clique no botão para localizar o código para o método de Evento de clique do botão .
  6. No método de Evento de clique do botão , cole o seguinte código:
      Dim myControl As New AxMyProject.AxMyLicensedControl()
    						
    este cria uma nova instância do controlo através do AxHost.

    Nota : não criar uma instância nova controlo através do COM (MyProject.MyLicensedControl novo), porque este não funcionará no formulário e não pode adicionar facilmente a licença.

Adicionar a licença do controlo

  1. Determinar e anote a chave de licença de tempo de execução para o controlo. Para MyLicensedControl , a chave de licença é "gnvlslnjskvlmlgnnimh".
  2. No método de Evento de clique do botão , cole o código seguinte 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 o controlo a licença de tempo de execução. -Cria uma instância de FieldInfo , que faz parte de saco da propriedade OCXState . Este conjunto de propriedades está repleto de informações de controlo de ActiveX específicas. Neste caso, está a obter o campo licenseKey e defini-la para myControl . Terá de o fazer para cada instância de qualquer controlo ActiveX que requer uma licença de tempo de execução.

Adicionar o controlo para o formulário

  1. Adicione o controlo à colecção de controlos do formulário e, em seguida, mostrar o controlo. Para efectuar este procedimento, pode utilizar o seguinte código:
            Controls.Add(myControl)
            myControl.Show()
    						
    colar este código de método de Evento de clique do botão , depois de "f.SetValue (myControl,"gnvlslnjskvlmlgnnimh")" e antes da linha "End Sub".

    Nota : Se a licença não é adicionada ao controlo e a licença é necessária, Controls.Add falhará. Controls.Add executa o código que contém esse validação da licença. Quando tentar e executar Controls.Add , verá o seguinte erro no modo de depuração:
    Uma excepção não processada do tipo 'System.ComponentModel.LicenseException' Ocorreu no system.windows.forms.dll informações adicionais: não tem uma licença para utilizar este controlo ActiveX.
    Ou, no momento da execução, poderá ver a seguinte mensagem de erro semelhante:
    Ocorreu uma excepção não processada na aplicação. Não tem uma licença para utilizar este controlo ActiveX.
  2. Prima F5 para executar o projecto.
  3. Clique no botão para adicionar o controlo ActiveX ao formulário.

Resolução de problemas

importante : Note o seguinte sobre esta operação:
  • Tem de adicionar a licença cada ocorrência de cada ActiveX controlo requer uma licença de tempo de execução. Por exemplo, se criar uma segunda instância do MyLicensedControl , terá de adicionar também a licença essa instância.
  • Certifique-se que tem a chave de licença correcto para o controlo. Determinar a chave de licença correcto é específica para o controlo: Para obter informações adicionais sobre como determinar a chave, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
    151771  (http://support.microsoft.com/kb/151771/EN-US/ ) LICREQST.EXE pedir uma chave de licença a partir de um objecto
    Em alternativa, pode utilizar Licenses.Add para o controlo no Visual Basic 6 num computador que tem a licença no registo. Licenses.Add devolve a licença de tempo de execução adicioná-lo como uma cadeia; em seguida, pode utilizar Debug.Print para obter a chave de licença.

Referências

Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
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: O que é o licenças conjunto utilizado para?
190670  (http://support.microsoft.com/kb/190670/EN-US/ ) COMO: Adicionar dinamicamente controlos 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )