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'; 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
Mensaje.Lines.Add( 'De: ' + AContext.Binding.PeerIP );
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
Mensaje.Lines.Add( 'De: ' + AContext.Binding.PeerIP );
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
