Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Вниз

копирование с помощью потоков   Найти похожие ветки 

 
frameZ ©   (2007-04-19 14:18) [0]

Клиент серверное приложениие для локалки. Работаю через сокеты. Посылаею на сервер команду снятия скриншота. Он снимает копию экрана сохраняет в поток и посылает клиенту . Как клиенту прочитать поток в компонент Image? Скриншот  хранится в BMP.


 
Johnmen ©   (2007-04-19 14:21) [1]

Куда клиент принимает это хозяйство?


 
frameZ ©   (2007-04-19 14:33) [2]

по идее в память.
в компоненте image есть  процедура Image1.Picture.Bitmap.LoadFromStream(Stream). Как я понял он читает из потока картинку и загружает в image.


 
Romm ©   (2007-04-19 14:40) [3]

Дайте мастеру слово! :)

procedure TMainForm.screen;
var
 size:int64;
 DeskTopDC: HDc;
 DeskTopCanvas: TCanvas;
 DeskTopRect: TRect;
 Bitmap:TBitmap;
 JPEG:TJPEGImage;
begin
 DeskTopDC := GetWindowDC(GetDeskTopWindow);
 DeskTopCanvas := TCanvas.Create;
 DeskTopCanvas.Handle := DeskTopDC;
 DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
 Bitmap:=TBitmap.Create;
 Bitmap.Width:=Screen.Width;
 Bitmap.Height:=Screen.Height;
 Bitmap.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
 jpeg:=TJpegImage.Create;
 jpeg.Assign(Bitmap);
 ReleaseDC(GetDeskTopWindow, DeskTopDC);
 Stream:=TMemoryStream.Create;
 jpeg.SaveToStream(stream);
 Stream.Position:=0;
 Size := Stream.Size;
 ServerSocket1.Socket.Connections[0].SendBuf(Size, SizeOf(Size));
 ServerSocket1.Socket.Connections[0].SendStream(Stream);
 Bitmap.Free;
 jpeg.Free;
end;

***
private
   Reciveing: boolean;
   Size: int64;
   AllSize: int64;
   Stream: TMemoryStream;
   Jpeg: TJPEGImage

procedure TMainForm.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
Buf: array[0..8191] of byte;
RecivedSize: integer;
begin
if not Reciveing then
  begin
    Socket.ReceiveBuf(Size, SizeOf(Size));
    Reciveing := true;
    Stream := TMemoryStream.Create;
    AllSize := 0;
  end
else
  begin
    RecivedSize := Socket.ReceiveBuf(Buf, SizeOf(Buf));
    Stream.Write(Buf, RecivedSize);
    inc(AllSize, RecivedSize);
    if AllSize = Size then
      begin
        Reciveing := false;
        JPeg := TJPEGImage.Create;
        Stream.Position := 0;
        JPeg.LoadFromStream(Stream);
        Image1.Picture.Assign(Jpeg);
        Jpeg.Free;
        Stream.Free;
    end;
end;


 
framez ©   (2007-04-19 14:44) [4]

Спасибо Romm!


 
Сергей М. ©   (2007-04-19 14:51) [5]


> Дайте мастеру слово!


Я бы не дал)

Кто тебя, "мастера", учил не анализировать результат работы функциональных методjd SendBuf() и ReceiveBuf() ?


 
Romm ©   (2007-04-19 14:54) [6]


> framez ©   (19.04.07 14:44) [4]

да не мне спасибо, а Мастерам, которые меня вчера этому учили :))

{RASkov}, Johnmen, Плохиш... простите если кого забыл упомянуть :)


 
Romm ©   (2007-04-19 14:55) [7]


> Сергей М. ©   (19.04.07 14:51) [5]

ну вот хоть бы раз дали покупаться в славе и уважении :)))


 
Romm ©   (2007-04-19 14:57) [8]


> Сергей М. ©   (19.04.07 14:51) [5]

да и какая разница - главное работает :))


 
Сергей М. ©   (2007-04-19 14:57) [9]


> Romm ©   (19.04.07 14:55) [7]


"На миг блаженство, навек урод" (С)


 
Romm ©   (2007-04-19 15:03) [10]


> Сергей М. ©   (19.04.07 14:57) [9]

жесть: )


 
framez ©   (2007-04-19 15:04) [11]

А подскажите как узнать при передачи файла через сокеты объем принятой или переданной информации?


 
Сергей М. ©   (2007-04-19 15:04) [12]


> жесть


Дешевый твентинейджерский сленг)


 
Сергей М. ©   (2007-04-19 15:07) [13]


> framez ©   (19.04.07 15:04) [11]


Реализуй своего наследника TStream с перекрытыми методами Read и Write.


 
Romm ©   (2007-04-19 15:08) [14]


> framez ©   (19.04.07 15:04) [11]

Stream.Size
?


> Сергей М. ©   (19.04.07 15:04) [12]

:)


 
SlymRO ©   (2007-04-20 07:22) [15]

А поискать слабо? Только вчера перетирали!
http://delphimaster.net/view/2-1176622206/



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.044 c
3-1172124141
userDelf
2007-02-22 09:02
2007.05.13
Проблема работы приложения на компах кроме моего


15-1176642479
Knight
2007-04-15 17:07
2007.05.13
Смотрю видео через Paint&#133


3-1171889776
mefisto
2007-02-19 15:56
2007.05.13
Проблема с печатью стариц на Fast report 4


2-1177246379
junior_177
2007-04-22 16:52
2007.05.13
Формула Магического квадрата


15-1176302795
Mr. D.
2007-04-11 18:46
2007.05.13
Изменение стиля поведения TDBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский