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 :
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:
Itens movidos ou copiados para o clipboard persistem mesmo após o aplicativo ser encerrado;
Os dados na área de transferência podem estar em qualquer formato de dados, também chamado de formato de área de transferência;
Quando um item é movido ou copiado para a área de transferência, os itens em outros formatos são apagados;
Para fazer com que os outros formatos persistam, use DataObject, que copia tudo o que existe na área de transferência atual, incluindo itens colados de outros aplicativos;
Coloque os dados na área de transferência em vários formatos para maximizar a possibilidade de que um aplicativo de destino, cujos requisitos de formato você não conheça, possa recuperar os dados com sucesso;
Como todos os aplicativos do Windows compartilham a área de transferência do sistema, o conteúdo poderá mudar quando você alternar para outro aplicativo;
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:
1 PictureBox - picImagem
1 TextBox - txttexto , Multiline=True
1 ListBox - lbArquivos
3 Buttons - btnObterImagem, btnObterTexto, btnObterArquivos
3 buttons - btnColocarImagem, btnColocarTexto, btnColocarArquivos
1 TextBox - txtDados
2 Buttons - btnObterAudio, btnColocarAudio
2 Buttons - btnObterDados, btnColocarDados
1 PictureBox - picMac, SizeMode = Stretcht
1 Button - btnSair
1 Button - btnLimpar
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 |
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: