Ver Mensaje Individual
  #6  
Antiguo 03-10-2006
Avatar de acertij022
acertij022 acertij022 is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina-Bs. As.
Posts: 233
Reputación: 22
acertij022 Va por buen camino
Hasta ahora solo logre esto pero nose como comparar y enviar solo la porcion que cambio
Código Delphi [-]
nit UServer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Jpeg, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient;

type
  TFServer = class(TForm)
    Timer1: TTimer;
    tcp: TIdTCPClient;
    procedure GetDesktop(Imagen:integer);
    procedure Timer1Timer(Sender: TObject);
    procedure Enviar(Imagen:integer);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FServer: TFServer;
  streamBMP1,streamBMP2:TMemoryStream;
  BMPEstado:integer=0; //indica que imagen esta para comparar

implementation

{$R *.dfm}
//##############################################################################
procedure TFServer.GetDesktop(Imagen:integer);
var
imag: TImage;
desktop: TCanvas;
begin
imag:=TImage.Create(FServer);
imag.Width:=screen.Width;
imag.Height:=screen.Height;
desktop:=TCanvas.Create;
with DeskTop do Handle := GetWindowDC (GetDesktopWindow) ;
with Imag.Canvas do CopyRect (Rect (0, 0, screen.Width, screen.Height),DeskTop,Rect (0, 0, screen.Width, screen.Height));
desktop.Free;
if Imagen=1 then
   begin
   streamBMP1:=TMemoryStream.Create;
   imag.Picture.Bitmap.SaveToStream(streamBMP1);
   end;
if Imagen=2 then
   begin
   streamBMP2:=TMemoryStream.Create;
   imag.Picture.Bitmap.SaveToStream(streamBMP2);
   end;
imag.Free;
end;
//##############################################################################
function comparar():boolean;
begin
Result:=true;
if streamBMP1<>streamBMP2 then Result:=true;
end;
//##############################################################################
procedure TFServer.Timer1Timer(Sender: TObject);
begin
Application.ProcessMessages;
if BMPEstado=0 then
   begin
   GetDesktop(1);
    try
    tcp.Connect;
    except Timer1.Enabled:=false; exit; end;
   Enviar(1);
   BMPEstado:=2;
   end;
if BMPEstado=1 then
   begin
   GetDesktop(1);
   if not comparar then
     begin
      try
      tcp.Connect;
      except Timer1.Enabled:=false; exit; end;
     Enviar(1);
     streamBMP2.Free;
     BMPEstado:=2;
     end
   else streamBMP1.Free;
   end;
if BMPEstado=2 then
   begin
   GetDesktop(2);
   if not comparar then
     begin
      try
      tcp.Connect;
      except Timer1.Enabled:=false; exit; end;
     Enviar(2);
     streamBMP1.Free;
     BMPEstado:=1;
     end
   else streamBMP2.Free;
   end;
end;
//##############################################################################
procedure TFServer.enviar(Imagen:integer);
begin
 try
  with tcp do
    begin
    OpenWriteBuffer;
    if Imagen=1 then WriteStream(streamBMP1);
    if Imagen=2 then WriteStream(streamBMP2);
    CloseWriteBuffer;
    Disconnect;
    end;
 except end;
end;
//##############################################################################
end.

Última edición por acertij022 fecha: 03-10-2006 a las 23:48:18.
Responder Con Cita