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
public
end;
var
FServer: TFServer;
streamBMP1,streamBMP2:TMemoryStream;
BMPEstado:integer=0;
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.