VB - Registrando uma DLL


Veremos neste artigo como registrar e remover uma DLL do registro e como o VB usa as informações do registro para criar objetos.

Registrando uma DLL

Podemos registrar uma DLL assim :

  1. Compilar a DLL no Visual Basic - quando você compila uma DLL ela é registrada automaticamente.
  2. Criar um programa de Setup - O registro da DLL fica a cargo do programa de Setup.
  3. Excecutar um programa que registra a DLL - Ex: Regsvr32.exe - O Regsvr32.exe é um utilitário presente no diretório \Windows\System e usa a seguinte sintaxe :

    Regsvr32.exe nome_da_dll.dll

Cancelando o registro de uma DLL

Podemos cancelar o registro de um componente DLL quando ele não se tornar mais necessário. Se a DLL foi registrada usando um programa de instalação ( Setup ) o cancelamento do registro pode ser feito via Painel de Controle em Adicionar/Remover programas.

Se o registro foi feito manualmente via utilitário Regsvr32.exe para cancelar o registro utilizamos a opçao /u e o nome da DLL que desejamos remover do sistema:

Regsvr32.exe  /u   nome_da_dll.dll   

Dando uma espiada nos bastidores

Quando registramos uma DLL o registro do windows é utilizado para guardar as informações sobre a DLL e permitir assim que os clientes e as bibliotecas COM possam localizar , criar e utilizar as classes na DLL.

As informações estão localizadas em HKEY_CLASSES_ROOT no registro do Windows. Além disto o Visual Basic gera três chaves de registro :

Vamos abrir o registro do Windows usando o RegEdit e escolher uma classe qualquer - DataNames.Classe_Teste. Clique sobre o ProgID e a seguir em Clsid e no lado direito do painel você verá um número de identificação da classe.

Sabendo o valor do CLSID da classe podemos localizar a DLL que contém a classe procurando pela chave InprocServer32 que contém a localização completa do arquivo DLL. Para fazer isto basta clicar com o botão direito do mouse sobre o nome Padrão e a seguir em modificar. Na janela que se abre com o numero da CLSID de um CTRL+C para copiar para clipboard.

Agora , ainda na chave HKEY_CLASSES_ROOT procure a chave CLSID expandindo-a. Clique com o botão direito do mouse sobre CLSID e na janela localizar cole o valor da chave CLSID e lique em localizar.

A classe será localizada e exibida:

 

Clicando na subchave InprocServer32 teremos o indicativo da localização da classe e o modelo de encadeamento usado - Apartament.

Perceba que a chave CLSID possui as seguintes subchaves além de InprocServer32 :

Para localizar a biblioteca de tipos para um componente clique em Padrão e a seguir em Modificar . Na janela Editar sequência de um CRL+C e clique em cancelar.

Agora localize a chave TypeLib e expandindo-a clique com o botão direito do mouse sobre TypeLib e cole o valor na janela . Clique em localizar e expandindo o valor achado clique na subchave win32 para ver o nome do arquivo dll da classe.

Usando a DLL - ativando o objeto COM

Quando você vai usar a sua DLL criando um objeto COM através da função CreateObject ou da palavra-chave New o VB realiza uma série de operações para criar o objeto no seu projeto.

Obs: Podemos usar um dos três códigos abaixo para criar uma instância de uma classe :

1
  Dim objTeste As Teste
  Set objTeste = CreateObject("Classe.Teste") 
Evite usar a sintaxe 3 , pois nesta sintaxe

o VB somente irá criar o objeto quando ele for usado.

Para saber quando deve criar o objeto o VB irá ter

controlar o processo e isto torna o código menos eficaz.

2
  Dim objTeste As Teste
  Set objTeste = New Teste			
3
  Dim objTeste As New Teste 

Quando você usa CreateObject faz com que o ProgID da classe seja criado e a seguir convertido para o CLSID correspondente segundo as seguintes etapas:

Feito isto esta tudo pronto , e , você já pode chamar as propriedades e métodos do objeto.

Até o próximo artigo...


José Carlos Macoratti