Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ver capturas de otra computadora...

Estas en el tema de Ver capturas de otra computadora... en el foro de Visual Basic clásico en Foros del Web. Holas Estoy haciendo un programa para ver la pantalla de otra computadora poniendo su ip, con el control winsock la idea que tengo es esta: ...
  #1 (permalink)  
Antiguo 01/07/2005, 15:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 14
Antigüedad: 19 años, 4 meses
Puntos: 0
Ver capturas de otra computadora...

Holas
Estoy haciendo un programa para ver la pantalla de otra computadora poniendo su ip, con el control winsock

la idea que tengo es esta:
en el cliente hay un picture
en el servidor se sacan las capturas de pantalla, y se guardan en C:\WINDOWS\temp.bmp
despues se pasaria ese archivo a C:\WINDOWS\temp.jpg con calidad jpg de 30% tipo para que pese menos de 50k por captura
despues se mandaria al cliente C:\WINDOWS\temp.jpg y el cliente la recibe, y la muestra en el picture
en el servidor hay un timer que cada 5 segundos manda una captura

ahora van las dudas:

Como paso el bmp a un jpg? yo habia probado con una dll vic32.dll pero era un trial por 30 dias... necesito algo gratis

y la otra duda...

como mando el jpg al cliente, osea, como se mandan archivos por winsock?
necesito una forma simple, que se mande de una vez, y q no se mande por partes, ni nada raro

gracias
salu2

Última edición por .:·Rodri-Go·:.; 01/07/2005 a las 16:34
  #2 (permalink)  
Antiguo 01/07/2005, 15:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por .:·Rodri-Go·:.
Holas
Estoy haciendo un programa para ver la pantalla de otra computadora poniendo su ip, con el control winsock

la idea que tengo es esta:
en el cliente hay un picture
en el servidor se sacan las capturas de pantalla, y se guardan en C:\WINDOWS\temp.bmp
despues se pasaria ese archivo a C:\WINDOWS\temp.jpg con calidad jpg de 30% tipo para que pese menos de 50k por captura
despues se mandaria al cliente C:\WINDOWS\temp.jpg y el cliente la recibe, y la muestra en el picture
en el servidor hay un timer que cada 5 segundos manda una captura

ahora van las dudas:

Como paso el bmp a un jpg? yo habia probado con una dll vic32.dll pero era un trial por 30 dias... necesito algo gratis

y la otra duda...

como mando el jpg al cliente, osea, como se mandan archivos por winsock?
necesito una forma simple, que se mande de una vez, y q no se mande por partes, ni nada raro

gracias
salu2
Lo de mandar el archivo no sé como se hace pero el de convertir .bmp a .jpg puedes encontrar una librería con un ejemplo en:
http://www.jrubi.com/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 01/07/2005, 16:01
 
Fecha de Ingreso: diciembre-2004
Mensajes: 14
Antigüedad: 19 años, 4 meses
Puntos: 0
Cita:
Iniciado por David el Grande
Lo de mandar el archivo no sé como se hace pero el de convertir .bmp a .jpg puedes encontrar una librería con un ejemplo en:
http://www.jrubi.com/
gracias me sirvio mucho
ahora alguien sabe lo de los archivos?
  #4 (permalink)  
Antiguo 01/07/2005, 18:12
 
Fecha de Ingreso: diciembre-2004
Mensajes: 14
Antigüedad: 19 años, 4 meses
Puntos: 0
contesten che!
  #5 (permalink)  
Antiguo 01/07/2005, 19:26
 
Fecha de Ingreso: diciembre-2004
Mensajes: 14
Antigüedad: 19 años, 4 meses
Puntos: 0
necesito mandar el archivo todo junto en una sola parte que sea algo facil
  #6 (permalink)  
Antiguo 02/07/2005, 01:28
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Hola te dejo un codigo que hizo un amigo Luciano del foro http://www.canalvisualbasic.net/ (que les recomiendo a todos lo visiten ya que es un un foro muy bueno)
El codigo funciona perfecto


Este mini programita, lo que hace es enviar desde un Formulario "El cliente" a otro "Servidor" un archivo de imagen y que luego se visualice en un PictureBox, la conexiòn es por medio del control Winsock.

El formulario cliente, mediante un comondialog, podemos seleccionar el fichero de imagen. Cuando presionas el boton "enviar", se lee del disco la imagen y se carga en un array binario, y se envia ese array de tipo byte (un array dinamico) al "servidor"
El formulario "Servidor", en el evento Arrival Data, va leyendo los datos y escribe en el directorio del servidor (el App.Path) el archivo de imagen (como si fuese un archivo temporal).
Cuando se terminò de descargar lo muestra en el pictureBox. Tiene una opcion mediante un check, por si queres borrar la imagen temporal que se habia guardado cuando llega todo el archivo, para que no se te vayan acumulando.

El codigo es largo porque tiene las instrucciones para redimensionar los controles y un par mas de cosas que no son importantes. El codigo esencial està en el botòn "enviar" del "cliente" y en el evento ArrivalData del "Servidor".

Nota: no tenès que hacer nada, solo poner los controles que se listan mas abajo para cada formulario, ya que todo va por còdigo, hasta los caption de los botones (no està comentado pero si no se entiende preguntar en el foro http://www.canalvisualbasic.net)

Poner los siguientes controles para el "Cliente"

-2 Label (Label1 y Label2)
-2 Text (Text1 y Text2)
-4 Command (command1,command2,command3 y command4)
-1 Picture1 y 1 ProgressBar1, 1 Winsock1 y un commonDialog1

El codigo en el form del cliente
---------------------------------------------------------

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim imagen() As Byte, flag As Boolean, progreso As Boolean
Private Sub Command1_Click()
Winsock1.Connect Text1, CInt(Text2)
Me.Caption = "Estado de la conexion: Conectado a la IP: " + Text1
Command3.Enabled = True: Command1.Enabled = False: Command2.Enabled = True
End Sub
Private Sub Command2_Click()
Command2.Enabled = False: Command1.Enabled = True
Winsock1.Close
End Sub
Private Sub Command3_Click()
On Error GoTo mensaje
CommonDialog1.DialogTitle = "Seleccionà el archivo de imagen"
CommonDialog1.ShowOpen
If CommonDialog1.FileName = "" Or CommonDialog1.CancelError = True Then Exit Sub
If MsgBox("¿Seleccionaste el archivo correcto??", vbInformation + vbYesNo, "Enviar archivo de imagen") = vbNo Then Exit Sub
Me.Print "--> Ruta del archivo seleccionado:--> "; CommonDialog1.FileName
Winsock1.SendData CommonDialog1.FileName: Picture1 = LoadPicture(CommonDialog1.FileName)
Command4.Enabled = True
Command3.Enabled = False
Exit Sub
mensaje:
If Err.Number = 40006 Then MsgBox Err.Description, vbInformation, "Error en la conexion": Command2_Click: Me.Cls
End Sub
Private Sub Command4_Click()
Dim tamaño As Long
progreso = True
Open CommonDialog1.FileName For Binary Access Read As #1
tamaño = LOF(1)
ReDim imagen(tamaño - 1)
Get #1, , imagen
Close
flag = True
Winsock1.SendData imagen
ProgressBar1.Max = tamaño + 1
End Sub
Private Sub Form_Load()
Dim ancho As Integer
Me.ScaleMode = vbPixels: Me.ForeColor = vbBlue
Text1 = "127.0.0.1": Text2 = 1000
Command1.Caption = "conectar": Command2.Caption = "desconectar": Command3.Caption = "-->> Buscar archivo de imagen para enviar al servidor": Command4.Caption = "Enviar"
ancho = TextWidth(Command3.Caption)
Command3.Width = ancho + ancho / 10
Command2.Enabled = False: Command4.Enabled = False: Command3.Enabled = False
Label1.Caption = "Direccion ip"
Label2.Caption = "Puerto"
Label1.AutoSize = True: Label2.AutoSize = True
Me.Caption = "No conectado"
End Sub

Private Sub Form_Resize()
On Error Resume Next
Label1.Left = 10: Text1.Left = Label1.Width + 20: Label2.Left = Text1.Left + Text1.Width + 20: Text2.Left = Label2.Left + Label2.Width + 10
Label1.Top = 20: Label2.Top = 20: Text1.Top = 20: Text2.Top = 20
Command3.Left = 20: Command3.Top = Text1.Top + Text1.Height + 20
Command1.Left = Me.ScaleWidth - Command1.Width - 20
Command2.Left = Me.ScaleWidth - Command2.Width - 20
Command4.Left = Me.ScaleWidth - Command4.Width - 20
Command1.Top = 20: Command2.Top = 20 + Command1.Height: Command4.Top = 50 + Command2.Top
ProgressBar1.Left = 20: ProgressBar1.Width = Me.ScaleWidth - 40
ProgressBar1.Top = Me.ScaleHeight - ProgressBar1.Height - 10
Picture1.Left = 20: Picture1.Top = Command3.Top + 30: Picture1.Height = Me.ScaleHeight - ProgressBar1.Height - Command3.Height - Text1.Height - 60
Picture1.Width = Me.ScaleWidth - Command2.Width - 50
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Error: " + Description
End Sub
Private Sub Winsock1_SendComplete()
Sleep 1500: If flag = True Then Command4.Enabled = True
If flag Then Winsock1.SendData 1: flag = False: Command4.Enabled = False: Command3.Enabled = True
If progreso Then
ProgressBar1.Value = 0
progreso = False
End If
End Sub
Private Sub Winsock1_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As Long)
If progreso Then
ProgressBar1 = ProgressBar1 + bytesSent
End If
End Sub


---------------------------------------------------------
Controles para el Formulario del servidor
----------------------------------------------------------

-3 command (Command1,Command2,Command3)
-1 Chaeck1
-1 Winsock1 y 1 Picture1

El codigo:
----------------------------------------------------------

Dim flag As Boolean, nombre As String
Private Sub Command1_Click()
Winsock1.Listen
Command1.Enabled = False
Command2.Enabled = True
End Sub

Private Sub Command2_Click()
Winsock1.Close
Command1.Enabled = True
Command2.Enabled = False
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
Me.ScaleMode = vbPixels
Winsock1.LocalPort = 1000
Command1.Caption = "poner a la escucha"
Command2.Caption = "Desconectar"
Command3.Caption = "salir": Check1.Caption = "Eliminar las imagenes temporales del directorio"
Me.Caption = "puerto determinado de comunicacon: 1000"
End Sub
Private Sub Form_Resize()
On Error Resume Next
Command1.Top = Me.ScaleHeight - Command1.Height
Command2.Top = Me.ScaleHeight - Command2.Height
Command3.Top = Me.ScaleHeight - Command3.Height
Command1.Left = 10: Command2.Left = Command1.Width + 10: Command3.Left = Me.ScaleWidth - Command3.Width - 10
Picture1.Width = Me.ScaleWidth - 20
Picture1.Left = 10
Me.Height = Screen.Height / 2: Check1.Left = 10: Check1.Top = Me.ScaleHeight - Command1.Height - Check1.Height
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim imagen() As Byte
Select Case flag
Case False
Winsock1.GetData nombre
nombre = Right(nombre, Len(nombre) - InStrRev(nombre, "\"))
Open App.Path + "\" & nombre For Binary As #1
flag = True
Case True
Winsock1.GetData imagen
If UBound(imagen) = 1 Then
Close
Picture1 = LoadPicture(App.Path + "\" + nombre)
If Check1 Then Kill App.Path + "\" + nombre
flag = False
Exit Sub
End If
Put #1, , imagen

End Select
End Sub


Nota: cambiando algunas pocas lineas, este ejmplo se puede utilizar para enviar cualquier tipo de archivos, Exe, Zip y guardarlos en la aplicacion remota
  #7 (permalink)  
Antiguo 02/07/2005, 11:06
 
Fecha de Ingreso: diciembre-2004
Mensajes: 14
Antigüedad: 19 años, 4 meses
Puntos: 0
buenisimo! gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:53.