Temat byl juz poruszany wielokrotnie ale wiekszosc osob prezentowala rozwiazania z wykorzystaniem socketow...
Inni natomiast napominali ze uzycie TIdTCPClient bylo by znacznie bardziej komfortowe; w ponadym przypadku jednakze nikt nie zaproponowal kodu realizujacego ow funkcje.
Probowalem cos zamemu "naskrobac" ale niestety nie funkcjonuje to ani troszke :-/
Procedura wysylajaca dane:
var
Bitmap : TBitmap;
ScreenDC : HDC;
FJpeg : TJpegImage;
MStream : TStream;
begin
Bitmap := TBitmap.Create;
Bitmap.Width := GetSystemMetrics(SM_CXSCREEN);
Bitmap.Height := GetSystemMetrics(SM_CYSCREEN);
ScreenDC := GetDC(0);
BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width,
Bitmap.Height, ScreenDC, 0, 0, SRCCOPY);
ReleaseDC(0, ScreenDC);
FJpeg := TJpegImage.Create;
FJpeg.Assign(Bitmap);
FJpeg.CompressionQuality := 50;
FJpeg.Compress;
MStream := TMemoryStream.Create;
FJpeg.SaveToStream(MStream);
if Edit1.Text <> '' then
begin
Klient.Host := Edit1.Text;
Klient.Connect;
if Klient.Connected then
begin
Klient.WriteStream(MStream);
Klient.Disconnect;
end;
end;
I pora na odbierajaca z ktora w ogole sobie juz nie radze:
var
ms: TMemoryStream;
Image: TJPEGImage;
begin
ms := TMemoryStream.Create;
Image := TJPEGImage.Create;
Athread.Connection.ReadStream(ms);
ms.Position := 0;
Image.LoadFromStream(ms);
Image1.Picture.Graphic := Image;
Milo bylo by gdyby ktos wychwycil moje bledy i wskazal jak prawdidlowo powinienem rozpatrzyc zadanie ;-)
Z gory dzieki :-)