Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Redes
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-07-2010
Avatar de adeszeus
adeszeus adeszeus is offline
Miembro
 
Registrado: abr 2010
Ubicación: San Mateo, Mexico (aun lado de Santa Maria y pasando el campo de futbol)
Posts: 47
Poder: 0
adeszeus Va por buen camino
Tomar pantalla de clientes

Buenas tardes ando buscando la manera de recibir impresiones de pantalla de los clientes de mi red, llevo dias buscando con indy 10 pero levanto el servidor y quiero reenviar mensajes y me marca k el socket esta ocupado... despues cheque unos ejemplos con sockets y el problema radica en que lo necesito para estar monitoreando y consume bastantes recursos el hecho de tomar la pantalla, ademas de tiempo de espera... y para colmo si esta ocupado mi proceso en las demas pc's me marca errorde que el socket esta ocupado, ando navegando y sin encontrar alguna respuesta, alguien me puede auxiliar?
Responder Con Cita
  #2  
Antiguo 03-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Disculpa, pero no entiendo bien qué quieres hacer exactamente.
Responder Con Cita
  #3  
Antiguo 03-07-2010
Avatar de adeszeus
adeszeus adeszeus is offline
Miembro
 
Registrado: abr 2010
Ubicación: San Mateo, Mexico (aun lado de Santa Maria y pasando el campo de futbol)
Posts: 47
Poder: 0
adeszeus Va por buen camino
Tomar la Impresion

lo que deseo es tomar la impresion de pantalla de mi cliente... y pueda visualizar lo que el cliente esta visualizando desde mi servidor. es decir lo que el cliente visualize lo pueda monitorear yo ya sea atravez de imagenes al menos, si fuera posible, algo similar al teamviewer o algo de ese tipo
Responder Con Cita
  #4  
Antiguo 03-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero quieres hacerlo tú mismo o quieres algún programa que lo haga?, si lo estás haciendo tú mismo... qué problema tienes y en qué podemos ayudarte?
Responder Con Cita
  #5  
Antiguo 03-07-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Puedes usar UltraVNC que es gratuito (no se si también libre), solo tienes que instalarlo en las pcs clientes, asignarle un puerto a cada una y hacer que se active al arranque de windows, inclusive puedes hacer que el usuario no pueda cerrarlo y que además sea invisible. La ventaja es que además de ver la pantalla del usuario, puedes controlar la pc, enviar mensajes de texto tipo chat y acceder a su disco duro (aunque no esté compartido). Lo puedes descargar aquí

Si como dice casimiro lo quieres hacer por tu cuenta, entonces es otro cantar.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #6  
Antiguo 03-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.048
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por AzidRain Ver Mensaje
Puedes usar UltraVNC que es gratuito (no se si también libre), [..]
Es totalmente libre y gratis. Es el que uso todo los días para atender a mis clientes.
Responder Con Cita
  #7  
Antiguo 03-07-2010
Avatar de adeszeus
adeszeus adeszeus is offline
Miembro
 
Registrado: abr 2010
Ubicación: San Mateo, Mexico (aun lado de Santa Maria y pasando el campo de futbol)
Posts: 47
Poder: 0
adeszeus Va por buen camino
no es por aplicaciones, si no realizarlo yo

el problema es que lo quiero hacer con componentes indy desde el mismo delphi... digo para chekar de manera remota esta el teamviewer, el ultravnc... pero mi problema es que yo mismo lo quiero resolver...espero tengan una ayuda... digo ya se como crear la impresion de pantalla y almacenarla en el cliente, ahora mi problema es enviar el archivo mendiante la red.. estaba checando con el TfileStream... pero no me llega el archivo...

este codigo es el k usaba
Código Delphi [-]
 
  FStream := TFileStream.Create('1.jpg', fmCreate);
  try
    AContext.connection.IOHandler.ReadStream(fStream, fmCreate);
    AContext.Connection.IOHandler.Free;
  finally
    AContext.connection.Disconnect;
  end;
  FreeAndNil(FStream);

pero no me almacena, me crea el archivo pero jamas lo puedo abrir...
ahora si en Acontext.connection.IOHandler.ReadStream( << esta seccion la cambio por TFileStream.create(extractfilepath(application.exename)+'1.jpg', fmcreate) si me lo crea pero tengo en ocasiones k cerrar la aplicacion y se mira la imagen... pero en otros ni eso hace... me pueden auxiliar?
Responder Con Cita
  #8  
Antiguo 04-07-2010
Avatar de adeszeus
adeszeus adeszeus is offline
Miembro
 
Registrado: abr 2010
Ubicación: San Mateo, Mexico (aun lado de Santa Maria y pasando el campo de futbol)
Posts: 47
Poder: 0
adeszeus Va por buen camino
Aun Sigo sin poder Almacenar el Archivo

Sigo con el Problema... llega la información pero jamas puedo visualizar la imagen
Responder Con Cita
  #9  
Antiguo 04-07-2010
Avatar de adeszeus
adeszeus adeszeus is offline
Miembro
 
Registrado: abr 2010
Ubicación: San Mateo, Mexico (aun lado de Santa Maria y pasando el campo de futbol)
Posts: 47
Poder: 0
adeszeus Va por buen camino
Unhappy en donde esta el error

este es el codigo de el servidor
Código Delphi [-]
 
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
    sMensaje: String;
    fStream : TFileStream;
begin
 
  sMensaje := AContext.Connection.Socket.ReadLn;
  Mensaje.Lines.Add( 'De: ' + AContext.Binding.PeerIP );
  Mensaje.Lines.Add( 'Mensaje: ' + sMensaje );
   FStream := TFileStream.Create(
   ExtractFilePath(Application.ExeName) + 'servidor.jpg'
   , fmCreate);
  try
    AContext.connection.IOHandler.ReadStream(fstream);
  finally
    AContext.connection.Disconnect;
  end;
  FreeAndNil(FStream);
end;

y este es el codigo de mi cliente
Código Delphi [-]
var
  SrcWindow: THandle;
  SrcDC: HDC;
  Bitmap: TBitmap;
  Jpg: TJPEGImage;
  Stream: TMemoryStream;
  Width, Height: Integer;
begin
  contador:=contador+1;
  SrcWindow:= GetDesktopWindow;
  if SrcWindow <> 0 then
  begin
    SrcDC:= GetDC(SrcWindow);
    if SrcDC <> 0 then
    begin
      Bitmap:= TBitmap.Create;
      Jpg:= TJPEGImage.Create;
      try
        Width:= GetSystemMetrics(SM_CXSCREEN);
        Height:= GetSystemMetrics(SM_CYSCREEN);
          Bitmap.Width:= Width;
          Bitmap.Height:= Height;
        StretchBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height,
          SrcDC,0,0,Width,Height,SRCCOPY);
        Jpg.CompressionQuality:= 40;
        Jpg.Assign(Bitmap);
        Jpg.Compress;
        Image1.Picture.Assign(Jpg);
        Stream:= TMemoryStream.Create;
        try
          Jpg.SaveToStream(Stream);
          IdTCPClient1.Host:='127.0.0.1'; //Prueba local
          IdTCPClient1.Port:=8080;
          IdTCPClient1.Connect;
          IdTCPClient1.Socket.WriteLn(mensaje.text);
          IdTCPClient1.IOHandler.Write(Stream, 0,true);
        finally
          Stream.Free;
        end;
      finally
        Bitmap.Free;
        Jpg.Free;
        ReleaseDC(SrcWindow,SrcDC);
      end;
    end;
  end;
IdTCPClient1.Disconnect;

Como se daran cuenta en este codigo, tomo la impresion de pantalla... y la deposito en un image para visualizar lo que envio... todo esta bien y aparentemente si recibe el stream mi IDTCPServer... pero jamas la puedo visualizar... hubo un momento en que si cerraba o liberaba el stream... pero segui trabajando y moviendo codigo y resulta que al final ya no funciona =( ... y hasta donde recuerdo esa era la base
Responder Con Cita
  #10  
Antiguo 05-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
He aquí un ejemplo si lo quieres hacer tu mismo: http://delphi.about.com/od/interneti.../aa012004a.htm
__________________
Herr Heins Faust
Responder Con Cita
  #11  
Antiguo 05-07-2010
Avatar de adeszeus
adeszeus adeszeus is offline
Miembro
 
Registrado: abr 2010
Ubicación: San Mateo, Mexico (aun lado de Santa Maria y pasando el campo de futbol)
Posts: 47
Poder: 0
adeszeus Va por buen camino
ya lo conocia

Ese ejemplo ya lo conocia.... y esta hecho con indy 9 y es totalmente inutil para el delphi 2010... asi que no me sirvio para nada, o al menos jamas pude interpretar los eventos que tiene, poco a poco va mejorando el proyecto y encontre dos maneras de hacerlo, enviar solamente la impresion de pantalla desde stream.... o archivo, especifico que esta hecho para imagenes, el codigo es es siguiente

Enviar archivo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream : TFileStream;
  filename:string;
begin
if (opendialog1.Execute) then
filename:=opendialog1.FileName;
  if FileName = '' then Exit;
  FileStream := TFileStream.Create(FileName, fmOpenRead);
  IdTCPClient1.Host:='127.0.0.1';
  IdTCPClient1.Port:=8080;
  IdTCPClient1.Connect;
  IdTCPClient1.IOHandler.Write(FileStream,0,true);
  IdTCPClient1.Disconnect;
end;

Enviar impresion de pantalla y convertirla a jpg

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  SrcWindow: THandle;
  SrcDC: HDC;
  Bitmap: TBitmap;
  Jpg: TJPEGImage;
  Stream: TMemoryStream;
  Width, Height: Integer;
begin
  SrcWindow:= GetDesktopWindow;
  if SrcWindow <> 0 then
  begin
    SrcDC:= GetDC(SrcWindow);
    if SrcDC <> 0 then
    begin
      Bitmap:= TBitmap.Create;
      Jpg:= TJPEGImage.Create;
      try
        Width:= GetSystemMetrics(SM_CXSCREEN);
        Height:= GetSystemMetrics(SM_CYSCREEN);
          Bitmap.Width:= Width;
          Bitmap.Height:= Height;
        StretchBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height,
          SrcDC,0,0,Width,Height,SRCCOPY);
        Jpg.CompressionQuality:= 60;
        Jpg.Assign(Bitmap);
        Jpg.Compress;
        Image1.Picture.Assign(Jpg);
        Stream:= TMemoryStream.Create;
        try
          Jpg.SaveToStream(Stream);
            IdTCPClient1.Host:='127.0.0.1'; //Prueba local
            IdTCPClient1.Port:=8080;
            IdTCPClient1.Connect;
            IdTCPClient1.IOHandler.Write(Stream, 0,true);
        finally
          Stream.Free;
        end;
      finally
        Bitmap.Free;
        Jpg.Free;
        ReleaseDC(SrcWindow,SrcDC);
      end;
    end;
  end;
IdTCPClient1.Disconnect;
end;

---------Lado Servidor--------

Aceptar Archivo

Código Delphi [-]
var
fStream : TFileStream;
begin
  //Traigo y  muestro mensaje
  Mensaje.Lines.Add( 'De: ' + AContext.Binding.PeerIP );
  //Guardo archivo enviado
  fStream := TFileStream.Create(
  ExtractFilePath(Application.ExeName) +'prueba.jpg'
  , fmCreate);
  try
    AContext.connection.IOHandler.ReadStream(fstream,0, True);
  finally
    AContext.connection.Disconnect;
  end;
  FreeAndNil(fStream);
fStream.Free;
end;

Visualizar el stream

Código Delphi [-]
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
stream:TmemoryStream;
jpg:Tjpegimage;
begin
  //Traigo y  muestro mensaje
  Mensaje.Lines.Add( 'De: ' + AContext.Binding.PeerIP );
  //Guardo archivo enviado
  stream:=tmemorystream.Create;
  AContext.Connection.IOHandler.ReadStream(stream,0,true);
  stream.Seek(0, soFromBeginning);
  jpg:=tjpegimage.create;
  jpg.LoadFromStream(stream);
Image1.Picture.Assign(jpg);
FreeAndNil(stream);
jpg.Free;
end;

Espero les sirva a los demas, y pues poco a poco se va complementando el ejercicio
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar Pantalla = Pantalla negra DarkDudae Gráficos 8 27-10-2008 12:29:36
X mejores Clientes JAI_ME SQL 4 03-08-2007 14:44:56
Se me desconectan los clientes pache Firebird e Interbase 7 15-12-2006 19:22:29
Vpn para 2 clientes a la vez leodelca23 Redes 3 11-12-2006 07:29:23
Lista de clientes del BDE aberruete Conexión con bases de datos 0 01-03-2004 20:19:34


La franja horaria es GMT +2. Ahora son las 11:35:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi