.NET

8 ago, 2008

Environment: Capturando informações sobre o ambiente da aplicação usando o VB.Net

Publicidade

Embora as aplicações .Net habitualmente estejam em uma máquina baseada no Windows, diversas características do sistema variarão. Por exemplo, pode ser necessário conhecer o nome da máquina, quais são as pastas locais, conhecer a versão do sistema operacional, o nome do usuário atual, e assim por diante. Muitas vezes é importante conhecer alguns detalhes do ambiente em que a aplicação está funcionando.

O .Net Framework fornece uma classe para atender a essa necessidade de maneira rápida e simples. Apresento-lhes a classe Environment no namespace System. Mostrarei aqui como obter essas informações utilizando a classe System.Environment.

Você pode acessar essas informações através de métodos e propriedades disponíveis na classe. Vamos conhecê-los antes de mergulharmos nos exemplo.

Métodos

Exit: encerra o processo atual e marca o exit code do processo para o valor especificado. O exit code deve ser passado para o método como um inteiro.

GetCommandLineArgs: retorna os argumentos especificados na linha de comando como um array de strings.

GetEnvironmentVariable: retorna o valor de uma variável de ambiente específica como um string – deve-se passar o nome da variável de ambiente para o método.

GetEnvironmentVariables: retorna todas as variáveis de ambiente e suas configurações atuais como um objeto IDictionary.

Propriedades

CommandLine: Propriedade “read-only” do tipo string, retorna os dados passado na linha de comando quando o processo atual foi inicilizado.

ExitCode: Propriedade “read/write” do tipo integer, fornece acesso para um código de saida (“exit code”) do processo. O valor do System.Environment.ExitCode é retornado se um processo não retorna um valor quando é finalizado.

HasShutdownStarted: Propriedade “read-only” do tipo boolean, indica se uma aplicação já iniciou o processo de parada.

NewLine: Propriedade “read-only” do tipo string, retorna o caractere de nova linha para a plataforma atual.

TickCount: Propriedade “read-only” do tipo integer, retorna em milissegundos o tempo passado desde o inicio do sistema. (Não pode ser menor que 500).

Version: Propriedade “read-only” do tipo Version, retorna a versão atual do sistema. Ele é retornado como um objeto Version, junto com muitas outras propriedades.

Exemplos:

Crie um novo projeto do VB.Net; no exemplo utilizei o formulário criado automaticamente pelo VS. Abaixo temos o código completo do formulário:

Option Explicit On
Option Strict On
Option Compare Binary

Imports System.Environment

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sDrivers As String = ""

        ´Mostra o usuário e a versão do sistema
        Teste_1()
        ´Argumentos de inicialização
        Teste_2()

        MessageBox.Show("Nome do sistema operacional: " & OSVersion.ToString)
        MessageBox.Show("Versão do sistema: " & Environment.Version.ToString)
        MessageBox.Show("Tempo desde o último boot: " & Mid(Convert.ToString((Environment.TickCount / 3600000)), 1, 5) & " :horas")
        MessageBox.Show("Diretório do sistema: " & Environment.SystemDirectory.ToString)
        MessageBox.Show("Nome do computador: " & Environment.MachineName.ToString)
        MessageBox.Show("Diretório corrente: " & Environment.CurrentDirectory.ToString)
        MessageBox.Show("User domain name: " & Environment.UserDomainName.ToString)
        MessageBox.Show("Working set: " & Environment.WorkingSet.ToString)
        MessageBox.Show("Pega a linha de comando para esse projeto: " & Environment.CommandLine.ToString)
        For i As Integer = 0 To Environment.GetLogicalDrives.Length - 1
            sDrivers = sDrivers & Environment.GetLogicalDrives(i) & ", "
        Next
        sDrivers = "Drivers do computador: " & sDrivers
        sDrivers = Microsoft.VisualBasic.Left(sDrivers, Len(sDrivers) - 2)
        MessageBox.Show(sDrivers)
        Me.Close()

    End Sub

    ´Nesta procedure, os valores retornados dependem do seu sistema.
    Public Sub Teste_1()
        Dim v As Version
        MessageBox.Show("Usuário atual: " & Environment.UserName)
        v = Environment.Version
        MessageBox.Show("Build: " & v.Build.ToString())
        MessageBox.Show("Master: " & v.Major.ToString())
        MessageBox.Show("Minor: " & v.Minor.ToString())
        MessageBox.Show("Revision: " & v.Revision.ToString())
    End Sub

    ´Aqui temos todos os argumentos passados quando o processo foi chamado    
    Public Sub Teste_2()
        Dim cr As String
        Dim teste() As String
        Dim x As Integer
        cr = Environment.NewLine
        teste = Environment.GetCommandLineArgs()
        For x = 0 To (teste.Length - 1)
            Console.Write(teste(x) + cr)
        Next x
    End Sub
End Class

Como disse anteriormente a classe Environment fornece um solução rápida e fácil para o desenvolvedor acessar as informações do ambiente onde o sistema está funcionando.

Nos três exemplos acima vimos como recuperar informações do ambiente da aplicação, isso inclui o seguinte:

  • Command-line arguments
  • Exit codes
  • Environment variable settings
  • Contents of the call stack
  • Time since last system boot
  • Version of the execution engine

Espero que este artigo tenha contribuido para seu crescimento, sinta-se a vontade para entrar em contato comigo para maiores esclarecimentos sobre o assunto do artigo ou qualquer outra dúvida, ajudarei da melhor forma possível.

Até o próxima artigo!!!

Links relacionados:

MSDN Documentação oficial da Microsoft

http://msdn.microsoft.com/en-us/library/system.environment.aspx

Embora as aplicações .Net habitualmente estejam em uma máquina baseada no Windows, diversas características do sistema variarão. Por exemplo, pode ser necessário conhecer o nome da máquina, quais são as pastas locais, conhecer a versão do sistema operacional, o nome do usuário atual, e assim por diante. Muitas vezes é importante conhecer alguns detalhes do ambiente em que a aplicação está funcionando.

O .Net Framework fornece uma classe para atender a essa necessidade de maneira rápida e simples. Apresento-lhes a classe Environment no namespace System. Mostrarei aqui como obter essas informações utilizando a classe System.Environment.

Você pode acessar essas informações através de métodos e propriedades disponíveis na classe. Vamos conhecê-los antes de mergulharmos nos exemplo.

Métodos

Exit: encerra o processo atual e marca o exit code do processo para o valor especificado. O exit code deve ser passado para o método como um inteiro.

GetCommandLineArgs: retorna os argumentos especificados na linha de comando como um array de strings.

GetEnvironmentVariable: retorna o valor de uma variável de ambiente específica como um string – deve-se passar o nome da variável de ambiente para o método.

GetEnvironmentVariables: retorna todas as variáveis de ambiente e suas configurações atuais como um objeto IDictionary.

Propriedades

CommandLine: Propriedade “read-only” do tipo string, retorna os dados passado na linha de comando quando o processo atual foi inicilizado.

ExitCode: Propriedade “read/write” do tipo integer, fornece acesso para um código de saida (“exit code”) do processo. O valor do System.Environment.ExitCode é retornado se um processo não retorna um valor quando é finalizado.

HasShutdownStarted: Propriedade “read-only” do tipo boolean, indica se uma aplicação já iniciou o processo de parada.

NewLine: Propriedade “read-only” do tipo string, retorna o caractere de nova linha para a plataforma atual.

TickCount: Propriedade “read-only” do tipo integer, retorna em milissegundos o tempo passado desde o inicio do sistema. (Não pode ser menor que 500).

Version: Propriedade “read-only” do tipo Version, retorna a versão atual do sistema. Ele é retornado como um objeto Version, junto com muitas outras propriedades.

Exemplos:

Crie um novo projeto do VB.Net; no exemplo utilizei o formulário criado automaticamente pelo VS. Abaixo temos o código completo do formulário:

Option Explicit On
Option Strict On
Option Compare Binary

Imports System.Environment

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sDrivers As String = ""

        ´Mostra o usuário e a versão do sistema
        Teste_1()
        ´Argumentos de inicialização
        Teste_2()

        MessageBox.Show("Nome do sistema operacional: " & OSVersion.ToString)
        MessageBox.Show("Versão do sistema: " & Environment.Version.ToString)
        MessageBox.Show("Tempo desde o último boot: " & Mid(Convert.ToString((Environment.TickCount / 3600000)), 1, 5) & " :horas")
        MessageBox.Show("Diretório do sistema: " & Environment.SystemDirectory.ToString)
        MessageBox.Show("Nome do computador: " & Environment.MachineName.ToString)
        MessageBox.Show("Diretório corrente: " & Environment.CurrentDirectory.ToString)
        MessageBox.Show("User domain name: " & Environment.UserDomainName.ToString)
        MessageBox.Show("Working set: " & Environment.WorkingSet.ToString)
        MessageBox.Show("Pega a linha de comando para esse projeto: " & Environment.CommandLine.ToString)
        For i As Integer = 0 To Environment.GetLogicalDrives.Length - 1
            sDrivers = sDrivers & Environment.GetLogicalDrives(i) & ", "
        Next
        sDrivers = "Drivers do computador: " & sDrivers
        sDrivers = Microsoft.VisualBasic.Left(sDrivers, Len(sDrivers) - 2)
        MessageBox.Show(sDrivers)
        Me.Close()

    End Sub

    ´Nesta procedure, os valores retornados dependem do seu sistema.
    Public Sub Teste_1()
        Dim v As Version
        MessageBox.Show("Usuário atual: " & Environment.UserName)
        v = Environment.Version
        MessageBox.Show("Build: " & v.Build.ToString())
        MessageBox.Show("Master: " & v.Major.ToString())
        MessageBox.Show("Minor: " & v.Minor.ToString())
        MessageBox.Show("Revision: " & v.Revision.ToString())
    End Sub

    ´Aqui temos todos os argumentos passados quando o processo foi chamado    
    Public Sub Teste_2()
        Dim cr As String
        Dim teste() As String
        Dim x As Integer
        cr = Environment.NewLine
        teste = Environment.GetCommandLineArgs()
        For x = 0 To (teste.Length - 1)
            Console.Write(teste(x) + cr)
        Next x
    End Sub
End Class

Como disse anteriormente a classe Environment fornece um solução rápida e fácil para o desenvolvedor acessar as informações do ambiente onde o sistema está funcionando.

Nos três exemplos acima vimos como recuperar informações do ambiente da aplicação, isso inclui o seguinte:

  • Command-line arguments
  • Exit codes
  • Environment variable settings
  • Contents of the call stack
  • Time since last system boot
  • Version of the execution engine

Espero que este artigo tenha contribuido para seu crescimento, sinta-se a vontade para entrar em contato comigo para maiores esclarecimentos sobre o assunto do artigo ou qualquer outra dúvida, ajudarei da melhor forma possível.

Até o próxima artigo!!!

Links relacionados:

MSDN Documentação oficial da Microsoft

http://msdn.microsoft.com/en-us/library/system.environment.aspx