Siema. Szukalem w faq, gotwocach, na forum ale nie znalazlem nic co by mnie satysfakcjonowalo. chodzi o to ze robie screena i chce przeslac go na drugi komputer. uzywam komponentow IdTCPClient i IdTCPServer. Przedstawiam wam kod, ktory mi nie dziala, chcialbym zeby mnie ktos uswiadomil. :)
pobieranie
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
var
Size : integer;
PicturePathName : string;
ftmpStream : TFileStream;
begin
PicturePathName := ExtractFileDir(ParamStr(0)) + '\Screen.JPG';
if FileExists (PicturePathName) then
DeleteFile(PicturePathName);
ftmpStream := TFileStream.Create(PicturePathName,fmCreate);
Size := AThread.Connection.ReadInteger;
AThread.Connection.ReadStream(fTmpStream,Size,False);
FreeAndNil(fTmpStream);
end;
wysyalnie
procedure Tform1.IdTCPServer1Connect(AThread: TIdPeerThread);
var
Can: TCanvas;
B: TBitmap;
JPG: TJPEGImage;
JPGstream: TMemoryStream;
begin
try
Can := TCanvas.Create;
Can.Handle := GetWindowDC(GetDesktopWindow);
B := TBitmap.Create;
B.Width := Screen.Width;
B.Height := Screen.Height;
B.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), Can, Rect(0, 0, Screen.Width, Screen.Height));
JPG := TJPEGImage.Create;
JPG.Assign(B);
JPG.CompressionQuality := 10;
JPG.Compress;
JPG.SaveToStream(JPGstream);
IdTCPClient1.WriteInteger(JPGstream.Size);
IdTCPClient1.OpenWriteBuffer;
IdTCPClient1.WriteStream(JPGstream);
IdTCPClient1.CloseWriteBuffer;
FreeAndNil(JPGstream);
finally
Can.Free;
B.Free;
JPG.Free;
end;
end;