VB.NET - Criando
uma livraria de código (DLL)
![]() |
Hoje veremos como criar uma livraria de código - DLL - usando a linguagem VB .NET. |
As livrarias de código (Code Libraries) na forma de arquivos DLL (Dynamic Link Libraries) formam a base do System Operacional Windows. Os arquivos das livrarias de códigos neste formato possuem a extensão .dll. Uma livraria de código geralmente esta no formato de um arquivo DLL e não pode ser executado como uma aplicação.
As funções que uma DLL contém são expostos de forma que outras aplicações podem acessá-las. Por exemplo, o código que gera uma GUI (Graphic User Interface) existem em arquivos DLL que são partes do sistema operacional. Estes arquivos são compartilhados e podem ser usados por outras aplicações. Ao colocar as funções mais usadas e de uso comum em uma DLL os programas não precisam conter o código destas funções, de forma que eles se tornam pequenos e fáceis de manter. (esta é a ideia...).
Neste artigo vamos mostrar como você pode criar uma DLL no VB.NET. A nossa DLL irá conter três classes sendo que cada classe possuirá propriedades e métodos que irão fornecer informação sobre a máquina local. Abaixo temos uma visão geral da DLL:
compInfo.dll | ||
Classe | Propriedade/Método | Descrição |
pCPU | Count | Número de CPUs presentes no computador |
Architecture | Arquitetura da CPU , Ex: x86 | |
Version | Número da versão da CPU | |
pOS | Platform | O nome do sistema operacional |
Version | A versão do sistema operacional. | |
pDisco | Size | O tamanho do disco especificado. |
FreeSpace | O espaço livre no disco especificado. | |
UsedSpace | O espaço usado pelo disco especificado. |
Todas as classes acima estarão presentes no arquivo DLL chamado compInfo.dll.
Criando a DLL no Visual Basic .NET
Abra o Visual Studio .NET ou o VB.NET (eu vou estar usando o VS.NET 2003) e no menu File selecione a opção New Project.
Na janela New Project selecione as opções:
![]() |
Na janela Solution Explorer , remova o formulário - form1.vb - do projeto: Clique sobre ele com o botão direito do mouse e selecione Delete do menu de contexto.
Clique com o botão direito do mouse sobre o projeto infoComp e selecione Add e a seguir Add New Item no menu de contexto.
Na janela Add New Item , selecione o template Class e informe o nome da classe como pCPU.vb na caixa de texto Name e clique no botão Open , conforme abaixo
![]() |
Esta ação irá incluir a classe pCPU ao projeto. Repita o processo acima para incluir as duas classes restantes ao projeto; o nome das classes são:
Após terminar a tarefa a janela Solution Explorer do seu projeto deverá estar da seguinte forma:
![]() |
Clique com o botão direito do mouse sobre o projeto compInfo e selecione a opção Properties no menu de contexto. A seguir na janela Property Pages do projeto, em Startup Object selecione a opção Sub Main , conforme figura abaixo, e, clique no botão OK.
Nota: Estaremos criando um arquivo de Modulo ao projeto onde será criada um procedimento Sub Main para testar as classes que iremos criar.
![]() |
Criando as propriedades da classe pCPU
Neste momento iremos criar as propriedades(Property) da classe pCPU e você deve conhecer o conceito de propriedade no VB.NET.
De forma bem resumida podemos dizer que que propriedades são variáveis especiais que permitem encapsular o código da minha classe.
Geralmente as propriedades possuem os procedimentos Get e Set mas podemos usar os modificadores :
O formato básica de uma declaração Property tem o seguinte formato:
Property
<nome> As Integer
''A seção Get
retorna o valor da propriedade
Get
Return <valor>
End Get
'A seção
Set aplica um valor a propreidade
Set(ByVal
Value
As Integer)
'Código
End Set
End Property
Para o nosso caso as propriedades serão somente para consultar valores e não será permitido atribuir valores às propriedades, por isto as nossas propriedades serão somente leitura - ReadOnly e terão seguinte formato:
ReadOnly
Property <nome>()
As String
Get
Return
Para saber mais sobre propriedades leia o artigo : VB.NET - Compreendendo Propriedades
A nossa classe pCPU tem as seguintes propriedades conforme definimos anteriormente:
Classe | Propriedade/Método | Descrição |
pCPU | Count | Número de CPUs presentes no computador |
Architecture | Arquitetura da CPU , Ex: x86 | |
Version | Número da versão da CPU |
Vou começar com a propriedade Count que define o número de CPUs presentes no computador. Clique duas vezes sobre a classe pCpu na janela Solution Explorer de forma a que a janela de código exibe a classe pCPU.
Inclua o seguinte comando no topo do código da janela da classe pCPU: Imports System.Environment
Esta declaração nos dá acesso ao método GetEnvironmentVariable da classe System.Environment . Este método retorna o valor de uma variável de ambiente. Usando uma variável de ambiente que fica armazenada no registro do WIndows podemos saber o número de CPUs no computador. A variável de ambiente para este caso é NUMBER_OF_PROCESSORS. Inclua a seguir o código abaixo a classe pCPU.
ReadOnly Property Count() As
String
Get
Return GetEnvironmentVariable("NUMBER_OF_PROCESSORS").ToString
End Get
End Property
Após isto, a janela de código da classe pCPU deverá ter a seguinte aparência:
![]() |
As propriedades Architeture e Version terão o mesmo padrão de comportamento(usando o método GetEnvironmentVariable), e, também usarão as variáveis de ambiente para obter os valores desejados :
Ao final, após incluir o código para as 2 classes acima teremos o seguinte código:
![]() |
Criando as propriedades da classe pOs
A classe pOs foi definida como tendo as seguintes propriedades:
Classe | Propriedade/Método | Descrição |
pOS | Platform | O nome do sistema operacional |
Version | A versão do sistema operacional. |
Novamente vamos usar o namespace System.Environment , e, através da declaração Imports declará-lo em nossa classe.
Este namespace nos dá acesso a classe OSVersion a qual possui as propriedades Plataform e Version que retornará os valores que desejamos obter. Selecione a classe pOs na janela Solution Explorer e inclua o código abaixo na classe:
![]() |
Criando os métodos na classe pDisco
Com a classe pDisco desejamos obter informações sobre tamanho, espaço livre e espaço usado do disco. A classe foi definida para ter os seguintes métodos:
Classe | Propriedade/Método | Descrição |
pDisco | Size | O tamanho do disco especificado. |
FreeSpace | O espaço livre no disco especificado. | |
UsedSpace | O espaço usado pelo disco especificado. |
Ao invés de propriedades iremos criar 3 métodos ( Size, FreeSpace e UsedSpace) na classe pDisco. Os métodos podem ser vistos como funções que podem receber parâmetros e retornar valores. Para o nosso caso os métodos definidos precisam receber como parâmetro a informação do disco ou letra do drive do qual desejamos obter as informações. Ex: objetoDisco.Size("c:")
Para acessar informações sobre os discos do computador precisamos usar componente ManagementObject que estão disponíveis através do componente System.Management. Ocorre que a livraria do componente System.Management não esta disponível por padrão, de forma que teremos que incluir uma referência a ela em nosso projeto. Vamos fazer isto:
![]() |
Agora selecione a classe pDisco na janela solution Explorer de forma que ela seja exibida na janela de código, e, inclua a declaração abaixo no início do arquivo:
Imports System.Management
Com isto temos acesso a classe ManagementObject que pode receber um parâmetro win32_logicaldisk.deviceid=<drive> para obter informação sobre um disco específico do computador.
Para incluir o método na classe digite o código abaixo na janela de código da classe:
![]() |
Neste código nós construímos um ManagementObject chamado Disco. Usando o método Get nós preenchemos a sua coleção com informações sobre o drive ( Drive ) que foi passado via parâmetro win32_logicaldisk.deviceid= para a chamada do construtor de ManagementObject. Os diferentes elementos da coleção Disco podem ser acessados através de uma string. Ex: Disco("Size").
Os métodos FreeSpace e UsedSpace também usam a classe ManagementObject e também recebem o parâmetro win32_logicaldisk.deviceid=<drive> para obter as informações desejadas. Abaixo temos o código de ambos os métodos na classe:
![]() |
Já temos as 3 classes com suas propriedades e métodos definidos e prontas. Antes de gerar a DLL vamos testar as nossas classes.
Clique com o botão direito do mouse no nome do projeto na janela Solution Explorer e selecione a opção Add e a seguir Add New Item do menu de contexto.
Na janela Add New Item, em templates selecione Module e informe o nome testeInfoComp.vb conforme figura abaixo:
![]() |
Selecione o arquivo testeInfoComp.vb e na janela de código inclua o seguinte código :
![]() |
Agora é só executar o projeto para ver o resultado.
Gerando o arquivo compInfo.dll
Tudo esta pronto para gerar a nossa DLL , o arquivo compInfo.dll.
Antes de prosseguir exclua o código que foi incluído no modulo Sub Main e exclua também o arquivo testeInfoComp.vb que foi usado só para testar o projeto.
Teremos que alterar a propriedade do projeto para isto clique com botão direito do mouse sobre o nome do projeto na janela Solution Explorer e selecione a opção Properties.
Na janela Property Pages altere na opção Output Type para Class Library e clique no botão Ok.
![]() |
Não esqueça de alterar o modo de Debug para Release
![]() |
Nota: A inclusão de informação de debug na versão compilada do seu projeto permite que você faça o debug a aplicação durante o processo de desenvolvimento. Para aumentar a velocidade e reduzir o tamanho da versão final do seu aplicativo altere a opção para Release sempre quando for compilar sua aplicação.
Agora clique sobre o nome do projeto e selecione a opção Build para compilar o projeto.
Feito isto, se você olhar na pasta bin do seu projeto irá ver o arquivo DLL compInfo.dll gerado com sucesso e pronto para ser usado.
![]() |
Nota: Você verá também uma versão .EXE do projeto - compInfo.exe - que foi gerada durante os testes do projeto.
Você acabou de gerar uma DLL onde criou 3 classes com métodos e propriedades que podem ser usadas por qualquer aplicativo. Basta fazer a referência a sua DLL gerada e acessar os métodos e propriedades definidos.
Usando a DLL criada
Vamos agora utilizar a DLL que criamos. Para isto vamos criar um novo projeto no VB.NET do tipo Windows Application com o nome testandoDLL.
No formulário padrão vamos incluir 5 controles TextBox, 5 controles Labels e 1 botão de comando conforme figura abaixo.
![]() |
Vamos incluir a referência a nossa DLL compInfo.dll criada. Para isto clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add Reference
Na janela Add Reference , na aba .NET, clique no botão Browse e selecione o arquivo compInfo.dll que deve estar na pasta \bin do diretório do projeto compInfo. A seguir clique em Select e em OK.
Agora podemos ter acesso a nossa DLL. No evento Click do botão de comando insira o seguinte código:
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
Dim infoDisco As New compInfo.pDisco Dim infoMemoria As New compInfo.pMemoria
Dim infoOs
As
New compInfo.pOS textbox1.text = infoCpu.Architecture TextBox2.Text = infoDisco.Size("C:") TextBox3.Text = infoDisco.UsedSpace("C:") TextBox4.Text = infoDisco.FreeSpace("C:") TextBox5.Text = infoOs.Platform
|
A primeiras 4 linhas de código criam instâncias de objetos usando a classe compInfo. A seguir estamos usando as propriedades de cada objeto para obter os valores e exibi-los nas caixas de texto.
O resultado da execução do projeto é dado a seguir:
![]() |
Como vimos nada que exija um conhecimento avançado.(Que tal fazer uma formatação do resultado para o espaço em disco...)
Até o próximo artigo VB.NET ...
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Criando uma livraria de Classes (DLL) - Crie ... - Macoratti.net