Vídeo

Como colocar ícone da aplicação no System Tray (Área de notificação)

Nessa vídeo aula, mostro como colocar o ícone da aplicação na área de notificação do Windows[bb], também conhecida como System Tray. Além disso, também mostro como adicionar um menu vinculado ao ícone da aplicação. Para isso utilizarei os objetos NotifyIcon e ContextMenuStrip.

Vídeo

Lendo Arquivo XML com função recursiva

Nessa vídeo aula, mostro como ler as tags, conhecidas também como nodes, do XML[bb]. Explico com ler o arquivo recursivamente, passando por ele todo e, como ler somente um node (o tag) específico.

Então vamos a aula[bb].

Posts que cito na aula:

Lendo Arquivo CSV no VB .NET

Nesse post vou mostrar como ler e tratar um arquivo CSV (Comma-separated values). No post Lendo um Arquivo TXT no VB .NET, mostrei a leitura de um arquivo txt, e também duas formas de como fazer isso. Para ler um arquivo CSV, o processe será o mesmo, já que este arquivo somente difere do arquivo txt, pela sua formatação.

O arquivo CSV

Esse formato de arquivo, é caracterizado por utilizar um caractere para delimitar os campos. Os campos são sequencias de textos. Para entendermos melhor, veja o exemplo de um arquivo CSV.

Arquivo CSV de Exemplo

A função SPLIT

O grande segredo para a leitura do arquivo CSV, está na separação dos campos, para tanto, utilizaremos a função SPLIT.

A função Split [Split(expression<,delimiter><,count><,compare>]  recebe uma STRING contendo os valores (campos) e os delimitadores e uma outra String com um único caractere que indica o delimitador, ou seja, um caractere que indica o fim de um campo, no nosso caso, o “,” (virgula) e, gera como retorno um array (vetor), onde as posições são os campos que foram separados. Somente o parâmetro expression é obrigatório, mas para efeito do nosso post, utilizarei também o segundo parâmetro delimiter. Para mais informações sobre a função, leia a definição completa no MSDN.

Por exemplo:

Utilizando a primeira linha do arquivo CSV mostrado acima, a função Split executada:

Array = Split(PrimeirLinha, ",")
'Retornaria:
'Array(0) = 1997
'Array(1) = Ford
'Array(2) = E350
'Array(3) = 3000.00

Preenchendo DataGridView com arquivo CSV

O projeto do tipo WidowsApplication, contará apenas com um botão, que iniciará o processo de leitura, e um DataGridView, que receberá os dados do arquivo.

Temos o seguinte código para ler o arquivo CSV:

Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim arqCSV As New StreamReader("D:POSTLendo arquivo CSVexemplo.csv")
        Dim LinhaArquivo As String
        Dim ArrayCampos() As String
        DataGridView1.Columns.Add("Ano", "Ano")
        DataGridView1.Columns.Add("Marca", "Marca")
        DataGridView1.Columns.Add("Modelo", "Modelo")
        DataGridView1.Columns.Add("Valor", "Valor")

        While Not arqCSV.EndOfStream
            LinhaArquivo = arqCSV.ReadLine
            ArrayCampos = Split(LinhaArquivo, ",")
            DataGridView1.Rows.Add(ArrayCampos)
        End While
    End Sub
End Class

Pontos que ressalto no código:

  • Imports System.IO: É necessária importação da classe System.IO para abrirmos o arquivo;
  • Linhas 4, 5 e 6: declaramos as variáveis que serão utilizadas;
  • Linhas 7, 8, 9 e 10: criamos as colunas do DataGridView;
  • Linha 12: criamos um laço que fará a leitura do arquivo, até o fim deste;
  • Linha 13: lemos uma linha do arquivo, algo como “1997,Ford,E350,3000.00“;
  • Linha 14: utilizamos a função Split para separar os campos da linha;
  • Linha 15:  adicionamos uma linha ao DataGridView e, a ela atribuímos o objeto ArrayCampos;

Como resultado, temos é o seguinte:

Resultado do DataGridView preenchido com arquivo CSV

Concluindo

Vimos que a função Split é bem versátil, você pode utilizá-la de diversas formas dependo do projeto que esteja trabalhando. Como sempre, a implementação dependerá de como você tem que exibir os dados, ainda é possível tratar os dados que estão sendo lidos, você pode querer que seja exibido um valor padrão quando o campo estiver vazio.

Por hoje é só. Até a próxima!

Visual Basic: Resgatando Variáveis de Ambiente

Variáveis de ambiente são variáveis que contém informações do sistema. Por exemplo o caminho da pasta “Arquivos de Programas”. Dependendo do idioma que o computador[bb] estiver configurado esta pasta pode ter outro nome, assim como o sistema pode não ter sido instalado no tradicional Drive C:.

Outro tipo de informação que pode ser resgatada seguindo essa linha[bb], é a pasta “Meus Documentos”. O caminho para está pasta pode ser alterado, ou seja, a pasta “Meus Documentos”, pode ser a pasta “D:documentos”, como poderão ver na imagem abaixo que representa o código desenvolvido como exemplo, exibindo as variáveis de sistema da minha máquina[bb].

Para esse teste criei um formulário com os seguintes objetos:

  • Um Button chamado btnCarregarVariaveis;

  • e um ListBox chamado lbVar;

Vamos ao código.

Antes de mais nada você deve importar a classe responsável pelas variáveis de ambiente.

Imports System.Environment

Para o botão:

Private Sub btnCarregarVariaveis_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarregarVariaveis.Click
lbVar.Items.Clear()
lbVar.Items.Add("Meus Documentos: " & GetFolderPath(SpecialFolder.MyDocuments))
lbVar.Items.Add("Arquivos de Programas (x86): " & GetFolderPath(SpecialFolder.ProgramFiles))
lbVar.Items.Add("Pasta System32: " & GetFolderPath(SpecialFolder.System))
lbVar.Items.Add("Desktop: " & GetFolderPath(SpecialFolder.Desktop))
lbVar.Items.Add("----------------------------")
lbVar.Items.Add("Drives do Sistema: " & Join(GetLogicalDrives, ", "))
lbVar.Items.Add("Nome do Computador: " & MachineName)
lbVar.Items.Add("Versão do Sistema: " & OSVersion.VersionString)
End Sub

O que estou fazendo.

Linha 2: limpo o ListBox para caso clique duas vezes no botão não preencha duas vezes.

A partir da linha 3 começo a adicionar as variáveis de ambiente ao meu ListBox por meio da função Add da propriedade Items.

Nas linhas 3, 4, 5 e 6 estou utilizando a função GetFolderPath para retornar as variáveis que correspondem a caminhos do sistema, como por exemplo na linha 5 onde é retornado a pasta System32. A função GetFolderPath recebe como parâmetro um Enum SpecialFolder. Com o Enumeration SpecialFolder, temos acesso às pastas do sistema.

Linha 8: Nessa linha utilizei a função GetLogicalDrives que retorna um array com os Drives do sistema, por isso utilizei também a junção Join que retorna uma String a partir de um array, tendo como segundo parâmetro uma String que será utilizada para separar os itens do array.

Linha 9: Função MachineName retorna o nome da máquina.

Linha 10: Propriedade OSVersion contém informações do sistema. Propriedade VersionString retorna a versão do sistema.

É isso galera até uma próxima.

Visual Basic: Encurtando URL com API Migre.me

Está se tornando cada vez mais comum a utilização de encurtadores de URL para compartilhar um link, memorizá-lo de forma mais fácil e até mesmo para fazer pegadinhas.

Há muitos encurtadores de URL, neste post vou mostrar como utilizar a API[bb] do Migre.me, encurtador de URL brasileiro, em um projeto em Visual Basic .NET.

O que é uma API?

API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. Fonte: Wikipédia

Primeiro criaremos um formulário com duas Labels, dois Textbox e um Button, como na imagem abaixo.

Clique para Ampliar

Os nomes dos Objetos são:

Textbox onde será digitada a URL: txtURL;

Textbox onde será exibido o resultado (URL[bb] encurtada): txtURLEncurtada;

Botão: btnEncurtar;

Vamos ao código.

É necessário importar duas classes, são elas:

Imports System.IO
Imports System.Net

Clicando no botão duas vezes você terá acesso a procedure que corresponde ao evento Click deste.

O código par que a API retorne a URL encurtada é:

    Private Sub btnEncurtar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncurtar.Click
        Dim url As String = "http://migre.me/api.txt?url=" & txtURL.Text

        Dim cliente As New WebClient
        Dim strS As Stream
        strS = cliente.OpenRead(url)

        Dim strR As New StreamReader(strS)

        txtURLEncurtada.Text = strR.ReadToEnd

        strR.Close()
        strS.Close()
    End Sub

Explicarei a seguir cada linha para ficar claro.

Linha 2: Declaração da variável que receberá a URL que deverá ser encurtada. Em seguida, na mesma linha, montamos a URL da API para que está retorne o resultado que queremos.

Entendendo o URL da API: quando solicitamos http:// migre.me/api.txt?url=NossaURLGrande, nos é retornado um arquivo de texto simples (.txt) com a URL já encurtada. Onde NossaURLGrande será a URL digitada.

Linha 4: declaração da variável que será responsável por fazer a solicitação à API.

Linha 5: declaração da variável que receberá o retorno (o arquivo .txt) enviado pela API.

Linha 6: a variável cliente faz a solicitação, por meio da função OpenRead, e armazena o retorno na variável strS.

Linha 8: declaração da variável que lerá a variável strS.

Linha 10: por meio da função ReadToEnd, o conteúdo do retorno da API é armazenado no txtURLEncurtada.

Linha 12 e 13: fecham variáveis que utilizamos para ler o arquivo. Uma forma de indicar que já terminamos de ler, quando trabalhando com arquivos locais a não utilização do método Close, pode impedir que o arquivo[bb] seja aberto por outro programa.

Clique para Ampliar

Lembrete: a API do migre.me limita a quantidade de URL encurtadas em uma hora.

Com isso temos nosso encurtador de URL.

Até uma próxima!