Mam maly(a nawet calkiem duzy) problem, chodzi o wyslanie zrobionego screena przez ServerSocket i odebranie przez ClientSocket i umieszczenie go w komponencie TImage. Za kazda próba wysłania wywala komunikat, ze nastapilo nagle rozlaczenie klienta, hociaz w ogóle sie nie rozlaczalem. Mozliwe, ze przeoczylem cos w kodzie.
To robi zrzut ekranu i wysyła:
if edtCommand.Text = ScreenDump then
begin
edtStatus.Text := 'Zrób zrzut ekranu';
Can := TCanvas.Create;
Can.Handle := GetWindowDC(GetDesktopWindow);
B := TBitmap.Create;
M := TMemoryStream.Create;
B.Width := 497;
B.Height := 305;
B.Canvas.CopyRect(Rect(0, 0, 497, 305), Can, Rect(0, 0,
497, 305));
B.SaveToStream(M);
ServerSocket.Socket.Connections[0].SendBuf(M, 303104);
B.Free;
M.Free;
end;
P.S Oczywiscie uzylem var:
B : TBitmap;
M: TMemoryStream;
A to odbiera tekst lub wyslany bufor i wyswietla w TImage:
procedure TMainForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
M: TMemoryStream;
MA: TMemoryStream;
B: TBitmap;
URL :String;
begin
memOdebrane.Lines.Add(Socket.ReceiveText);
M := TMemoryStream.Create;
B := TBitmap.Create;
Socket.ReceiveBuf(M, Socket.ReceiveLength);
B.LoadFromStream(M);
B.SaveToFile('C:/ScreenDump.bmp');
URL := 'C:/ScreenDump.bmp';
pctrScreenDump.Picture.LoadFromFile(URL);
end;
Prosilbym o jakis poprawny kod, poniewaz chyba w tym cos przeoczylem...
Sebastian Nowak(Snowak) [cygaro]