VB .NET - Capturando a tela e enviando remotamente (espião) |
Neste artigo vamos utilizar os seguintes recursos da linguagem VB .NET :
Classe TcpClient -
Classe TcpListner - Fornece métodos simples que escutam e aceitam solicitações de conexão de entrada no bloqueio de modo síncrono.Você pode usar tanto um TcpClient quanto um Socket para conectar-se com um TcpListener.
Classe NetworkStream -
Para criar um NetworkStream, você deve fornecer um Socket conectado. Você também pode especificar qual permissão FileAccess a NetworkStream tem sobre o Socket. Por padrão, fechar o NetworkStream não fecha os Socket fornecidos. Se você quiser que o NetworkStream tenha permissão para fechar os, você deve especificar true para o valor da do parâmetro ownsSocket.
Classe BinaryFormatter - Serializa e deserializa um objeto, ou um grafo de objetos conectados, em formato binário.
A classe BinaryFormatter implementa a interface IRemotingFormatter para suportar chamadas de procedimento remoto (RPCs), e a interface IFormatter para oferecer suporte a serialização de um gráfico de objetos.
Vamos então ao que interessa...
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando a aplicação cliente que envia as imagens
Vamos iniciar criando o projeto que irá capturar a tela , se conectar com a aplicação remota em um endereço e porta e irá enviar a imagem.
Abra o VS Community 2015 e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application;
Informe o nome VBNET_VisualizadorRemoto e clique no botão OK;
A partir da ToolBox inclua no formulário os seguintes controles:
1 Button - btnConectar
1 Button - btnEnviarImagem
1 Timer - Timer1 ; Interval = 2000
Disponha os controles no formulário conforme a figura abaixo:
A seguir declare os namespaces no formulário:
Imports
System.Net.SocketsLogo a pós a declaração do formulário vamos definir as variáveis que vamos usar no projeto:
Dim cliente As New TcpClientAgora vamos criar o método para capturar a tela :
Public Function CapturaTelaDesktop() As Image
Dim limites As Rectangle = Nothing
Dim tela As Bitmap = Nothing
Dim grafico As Graphics = Nothing
limites = Screen.PrimaryScreen.Bounds
tela = New Bitmap(bounds.Width, bounds.Height, Imaging.PixelFormat.Format32bppArgb)
grafico = Graphics.FromImage(tela)
grafico.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
Return tela
End Function
|
O método retorna a imagem do gráfico da tela capturada.
Agora vamos criar o método para enviar a imagem:
Private Sub EnviarImagem()
Try
Dim bf As New BinaryFormatter
nstream = cliente.GetStream
bf.Serialize(nstream, CapturaTelaDesktop())
Catch ex As Exception
MessageBox.Show("Erro : " & ex.Message)
End Try
End Sub
|
Neste código criamos uma instância de BinaryFormatter e obtemos o stream a partir do cliente
No evento Click do botão Conectar inclua o código abaixo:
Private Sub btnConectar_Click(sender As Object, e As EventArgs) Handles btnConectar.Click
Try
cliente.Connect("127.0.0.1", 8085)
Catch ex As Exception
MsgBox("Falhou ao se conectar...")
End Try
End Sub
|
Aqui estamos conectando com uma aplicação que esta em localhost(127.0.0.1) e esta escutando na porta 8085.
Para concluir, no evento Click do botão Ativar Envio de Dados , inclui o código abaixo:
Private Sub btnEnviarImagem_Click(sender As Object, e As EventArgs) Handles btnEnviarImagem.Click
Timer1.Start()
End Sub
|
Para enviar a imagem pasta inclui a chamada do método EnviarImagem() no evento Tick do controler Timer. Assim a cada 2 segundos teremos o envio da imagem:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
EnviarImagem()
End Sub
|
Agora é só alegria...
Executando o projeto e clicando no botão Conectar iremos nos conectar com a aplicação que vai receber a imagem.
Ao clicar no botão - Ativar Envio de dados - estaremos ativando o timer para chamar a cada 2 segundos o método EnviarImagem:
Na segunda parte do artigo vamos criar a aplicação que vai receber e exibir as imagens enviadas pelo nosso programa.
Pegue o projeto completo da primeira parte aqui : VBNET_VisualizadorRemoto.zip
Porque a
palavra da cruz é loucura para os que perecem; mas para nós, que somos salvos, é
o poder de Deus.
1 Coríntios 1:18
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB.NET - Programando Socket com Multithreads - Macoratti ...