VB .NET -  Usando os recursos de namespace My - II


 Continuando a série de artigos sobre o namespace My da linguagem VB .NET, estamos abordando o recurso My.Computer, mostrando como realizar algumas tarefas.

O recurso My.Computer possui referência aos seguintes objetos :

My.Computer.Audio

My.Computer.Clipboard

My.Computer.Clock

My.Computer.FileSystem

My.Computer.FileSystem.SpecialDirectories

My.Computer.Info

My.Computer.Keyboard

My.Computer.Mouse

My.Computer.Network

My.Computer.Ports

My.Computer.Registry

Na primeira parte do artigo iniciamos com o objeto Audio e seguiremos agora para objeto ClipBoard que fornece métodos para manipular o ClipBoard ou área de transferência do Windows.

Alguns fatos sobre o ClipBoard:

Recursos usados:

Usando o recurso My.Computer.ClipBoard

Abra a Solução Usando_My  criada na primeira parte do artigo - VB .NET -  Usando os recursos de namespace My - I . Vamos incluir um novo projeto a essa solução.

Agora no menu FILE clique em Add -> New Project;

Selecione Visual Basic e o template Windows Forms Application e informe o nome My_Computer.ClipBoard e clique em OK;

Assim teremos uma solução com o projeto pronto para ser usado.

My.Computer.ClipBoard

Vamos mostrar como realizar as principais tarefas com o ClibBoard usando os recursos do namespace My.Computer.CliBoard.

Inclua no formulário form1.vb do projeto a partir da ToolBox os seguintes controles:

Disponha os controles no formulário conforme o leiaute da figura a seguir:

1- Colocando dados no ClipBoard

Vamos agora definir o código de cada Button que coloca dados no ClipBoard. Podemos colocar dados realizando operações de copiar e colar no Windows e via código como iremos mostrar.

Agora basta definir o código em cada evento Click dos botões de comando:

1- Colocar Imagem

    Private Sub btnColocarImagem_Click(sender As Object, e As EventArgs) Handles btnColocarImagem.Click
        Try
            My.Computer.Clipboard.SetImage(picMac.Image)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Usamos o método My.Computer.Clipboard.SetImage(picMac.Image) para colocar uma imagem no ClipBoard onde picMac.Image representa a imagem definida no controle PictureBox picMac que foi definido no formulário com uma imagem e que esta oculto.

2- Colocar Texto

   Private Sub btnColocarTexto_Click(sender As Object, e As EventArgs) Handles btnColocarTexto.Click
        Try
            My.Computer.Clipboard.SetText("Macoratti .net - Quase tudo para Visual Basic")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Usamos o método My.Computer.Clipboard.SetText para colocar o texto no ClipBoard.

3- Colocar Arquivos

  Private Sub btnColocarArquivos_Click(sender As Object, e As EventArgs) Handles btnColocarArquivos.Click
        Try
            Dim listaArquivos As New List(Of String)()
            For Each nomeArquivo As String In Directory.GetFiles(Application.StartupPath)
                listaArquivos.Add(nomeArquivo)
            Next
            My.Computer.Clipboard.Clear()
            My.Computer.Clipboard.SetData(DataFormats.FileDrop, listaArquivos.ToArray())
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Definimos uma lista de strings e a preenchemos com os nomes dos arquivos obtidos no diretório da aplicação.

A seguir usamos o método  My.Computer.Clipboard.SetData() para incluir os arquivos no ClipBoard definindo o formato e a lista de arquivos.

4- Colocar Áudio

   Private Sub btnColocarAudio_Click(sender As Object, e As EventArgs) Handles btnColocarAudio.Click
        Try
            Dim musica As Byte()
            musica = My.Computer.FileSystem.ReadAllBytes("c:\dados\wav\sax.wav")
            My.Computer.Clipboard.SetAudio(musica)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Usamos o método My.Computer.Clipboard.SetAudio para colocar um arquivo de áudio no clipboard.

5- Colocar Dados

  Private Sub btnColocarDados_Click(sender As Object, e As EventArgs) Handles btnColocarDados.Click
        Try
            Dim _pessoa As New Pessoa("Macoratti", "macoratti@yahoo.com")
            _pessoa.CopiaParaClipBoard()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Para usar esse código temos que definir uma classe no projeto chamada Pessoa() com seguinte código:

<Serializable()> _
Public Class Pessoa
    Public Property Nome As String
    Public Property Email As String
    Sub New(ByVal _nome As String, ByVal _email As String)
        Nome = _nome
        Email = _email
    End Sub
    Public Sub CopiaParaClipBoard()
        'registra o formato customizado 
        Dim formato As DataFormats.Format = DataFormats.GetFormat(GetType(Pessoa).FullName)
        'copia para o clipboard
        Dim dataObj As IDataObject = New DataObject()
        dataObj.SetData(formato.Name, False, Me)
        My.Computer.Clipboard.SetDataObject(dataObj)
    End Sub
End Class

Note que a classe possui o modificador <Serializable> para serializar a classe. E definimos a classe o método CopiaParaClipBoard() que efetivamente faz uma cópia da instância da classe para o clipboard usando o método My.Computer.Clipboard.SetDataObject().

Nota: Serialização é o processo que consiste em converter um objeto em uma sequência linear de bytes.

2- Obter dados no ClipBoard

Agora vamos definir o código dos botões para obter os dados do ClipBoard:

1- Obter Imagem do ClipBoard

   Private Sub btnObterImagem_Click(sender As Object, e As EventArgs) Handles btnObterImagem.Click
        Try
            If My.Computer.Clipboard.ContainsImage() = True Then
                If My.Computer.Clipboard.GetDataObject().GetDataPresent(DataFormats.Bitmap) Then
                    picImagem.Image = DirectCast(My.Computer.Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
                End If
            Else
                MessageBox.Show("Não existe imagem na área de transferência.")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Estamos verificando se existe uma imagem no clipboard usando o método My.Computer.Clipboard.ContainsImage(); a seguir verificamos se o objeto do ClipBoard esta no formato BitMap e usando o método My.Computer.Clipboard.GetDataObject() para obter a imagem exibindo no controle PicImagem do formulário.

2- Obter Texto do ClipBoard

   Private Sub btnObterTexto_Click(sender As Object, e As EventArgs) Handles btnObterTexto.Click
        Try
            If My.Computer.Clipboard.ContainsText() = True Then
                txtTexto.Text = My.Computer.Clipboard.GetText()
            Else
                MessageBox.Show("Não existe Texto na área de transferência.")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
 End Sub

Usamos o método My.Computer.Clipboard.GetText() para obter o texto a partir do ClipBoard.

3- Obter Arquivos do ClipBoard

  Private Sub btnObterArquivos_Click(sender As Object, e As EventArgs) Handles btnObterArquivos.Click
        Try
            If My.Computer.Clipboard.ContainsFileDropList Then
                Dim Arquivos As String() = DirectCast(My.Computer.Clipboard.GetData(DataFormats.FileDrop), String())
                ' Exibe os arquivos
                lbArquivos.DataSource = Arquivos
            Else
                MessageBox.Show("Não existe arquivos na área de transferência.")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Verificamos se o clipboard contém arquivos usando o método My.Computer.Clipboard.ContainsFileDropList e usamos o método My.Computer.Clipboard.GetData() para obter os arquivos e exibir no controle ListBox lbArquivos.

4- Obter Áudio do ClipBoard

   Private Sub btnObterAudio_Click(sender As Object, e As EventArgs) Handles btnObterAudio.Click
        Dim audioStream As Stream = Nothing
        Try
            If My.Computer.Clipboard.ContainsAudio() Then
                audioStream = My.Computer.Clipboard.GetAudioStream()
                My.Computer.Audio.Play(audioStream.ToString(), AudioPlayMode.Background)
            Else
                MessageBox.Show("Não existe áudio na área de transferência.")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Verificamos se o existe áudio no clipboard usando o método My.Computer.Clipboard.ContainsAudio() e a seguir obtemos o áudio usando o método  My.Computer.Clipboard.GetAudioStream().

5- Obter Dados do ClipBoard

  Private Sub btnObterDados_Click(sender As Object, e As EventArgs) Handles btnObterDados.Click
        Try
            Dim _pessoa As Pessoa = Nothing
            Dim dataObj As IDataObject = My.Computer.Clipboard.GetDataObject()
            Dim format As String = GetType(Pessoa).FullName
            If dataObj.GetDataPresent(format) Then
                _pessoa = TryCast(dataObj.GetData(format), Pessoa)
            End If
            txtDados.Text = _pessoa.Nome & "  //  " & _pessoa.Email
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
 End Sub

Esse código obtém os dados da classe Pessoa que foi criada e que contém o método que permite salvar seus dados no ClipBoard.

Neste código obtemos os dados e convertemos o formato para o nosso tipo Pessoa para em seguida exibir os dados da classe no controle textbox txtDados.

Para limpar o conteúdo do ClipBoard usamos o método  My.Computer.Clipboard.Clear() conforme o código a seguir:

 Private Sub btnLimpar_Click(sender As Object, e As EventArgs) Handles btnLimpar.Click
        Try
            My.Computer.Clipboard.Clear()
            picImagem.Image = Nothing
            txtTexto.Text = ""
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Vimos assim as principais tarefas relacionadas com o clipboard para inserir e obter dados.

Pegue o projeto completo aqui:  Usando_My_2.zip

Em verdade, em verdade vos digo que vem a hora, e agora é, em que os mortos ouvirão a voz do Filho de Deus, e os que a ouvirem viverão.
Porque, como o Pai tem a vida em si mesmo, assim deu também ao Filho ter a vida em si mesmo;
E deu-lhe o poder de exercer o juízo, porque é o Filho do homem
João 5:25-27

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti