тогда уж все на сокетах будет, щас пытался сделать передачу файла и выдает ошибку((
Сервер(он отправляет):
PHP код:
procedure TForm1.GrabWindow;
var
Desk: TCanvas;
GrabImage:TImage;
ms: TMemoryStream;
begin
Desk:= TCanvas.Create;
Desk.Handle:=GetWindowDC(GetDesktopWindow);
GrabImage.Width:=Screen.Width;
GrabImage.Height:=Screen.Height;
GrabImage.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height),Desk,Rect(0, 0, Screen.Width, Screen.Height));
Desk.Free;
ms:=TMemoryStream.Create;
try
GrabImage.Picture.Bitmap.SaveToStream(ms);
ms.Position:=0;
ServerSocket1.Socket.SendText(IntToStr(ms.Size) + #0);
ServerSocket1.Socket.SendStream(ms);
except
ms.Free;
end;
end;
и код клиента(он получает):
PHP код:
procedure TForm1.csRead(Sender: TObject; Socket: TCustomWinSocket);
var
s,sl:string;
begin
i:=cs.Socket.ReceiveText;
if i='sendscreenshot' then
begin
s:=cs.Socket.ReceiveText;
SetLength(sl, StrLen(PChar(s))+1);
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(s, 1, Length(sl));
try
Data.write(s[1], length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;
Image1.Picture.Bitmap.LoadFromStream(Data);
Data.Free;
end;
except
Data.Free;
end;
end;
end;
выдает ошибку, + щас начал не с того не с сего выдавать ошибку на GrabImage.Width:=Screen.Width;