Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2010, 22:00   #1
rust-02
Пользователь
 
Регистрация: 24.02.2009
Сообщений: 16
По умолчанию Передача скриншота

Мне нужно сделать скриншот экрана и отправить его на сервер не сохраняя на компе. скриншот делаю так:
Код:
bmp:=Tbitmap.Create;
jpgimg:=TJPEGImage.Create;
bmp.Height:=Screen.Height;
bmp.Width:=Screen.Width;
DC:= GetDC(0);
bitblt(bmp.Canvas.Handle,0,0,Screen.Width,Screen.Height,DC,0,0, SRCCopy);
releaseDC(0,DC);
jpgimg.Assign(bmp);
jpgImg.CompressionQuality:=100;
 asd:=TMemoryStream.Create;
 jpgimg.SaveToStream(asd);
только вот не знаю как отправить на сервер.
Подскажите если можете
rust-02 вне форума Ответить с цитированием
Старый 14.10.2010, 04:39   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Socket.SendStream(asd);
а вообще конкретнее через что отправить надо то.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.10.2010, 11:50   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

в одной из прог передавал так (использовал Indy10)

На стороне сервера.....
Код:
procedure TSrvForm.SpyTCPServerExecute(AContext: TIdContext);
 var command:string;
begin
 command:= AContext.Connection.IOHandler.ReadLn;
 if Pos('Give_Screen',command)<>0 then SendScreen(AContext);
end;

Procedure SendScreen(SSConnection:TIdContext);
var dc:HDC;
    ScreenCanvas:TCanvas;
    ScreenStream:TMemoryStream;
    ScreenRect:TRect;
    ScreenBM:TBitMap;
    SendJPEG:TJPEGImage;
begin
 ScreenRect:=Screen.DesktopRect;
 ScreenCanvas:=TCanvas.Create;
 ScreenCanvas.Handle:=GetDC(0);
 ScreenBM:=TBitMap.Create;
 SendJPEG:=TJPEGImage.Create;
 ScreenBM.Width:=Screen.Width;
 ScreenBM.Height:=Screen.Height;
 ScreenBM.Canvas.CopyRect(ScreenRect,ScreenCanvas,ScreenRect);
 ReleaseDC(0,ScreenCanvas.Handle);
 ScreenStream:=TMemoryStream.Create;
 SendJPEG.Assign(ScreenBM);
 //SendJPEG.CompressionQuality:=50;  //степень сжатия от 1 до 100
 //SendJPEG.Compress;
 SendJPEG.SaveToStream(ScreenStream);
 //ScreenBM.SaveToStream(ScreenStream);
 ScreenStream.Position:=0;
 try
  SSConnection.Connection.IOHandler.Write(ScreenStream,ScreenStream.Size,true);
 finally
  SSConnection.Connection.Disconnect;
 end;
 SendJPEG.Free;
 ScreenStream.Clear;
 ScreenStream.Free;
 ScreenBM.Free;
end;
на стороне клиента....
Код:
procedure TAdminForm.SpyTimerTimer(Sender: TObject);
var ScreenStream:TMemoryStream;
    BM:TBitMap;
    JP:TJPEGImage;
begin
 ScreenStream:=TMemoryStream.Create;
 //BM:=TBitMap.Create;
 JP:=TJPEGImage.Create;
 AdminForm.SpyTCPClient.Host:=AdminForm.IPListBox.Items[AdminForm.IPListBox.SelectedItemIndex].Caption;
 try
  AdminForm.SpyTCPClient.Connect;
  try
   Adminform.SpyTCPClient.IOHandler.WriteLn('Give_Screen:');
   Adminform.SpyTCPClient.IOHandler.ReadStream(ScreenStream);
   ScreenStream.Position:=0;
   JP.LoadFromStream(ScreenStream);
   AdminForm.Image1.Picture.Bitmap.Assign(JP)
  finally
  AdminForm.SpyTCPClient.Disconnect;
  end;
 except
  on E: EIdException do
  begin
   AdminForm.SpyTimer.Enabled:=false;
   MessageBox(0,PChar(E.Message),'Ошибка соединения',MB_ICONERROR+MB_OK+MB_SYSTEMMODAL);
  end;
 end;
 ScreenStream.Clear;
 ScreenStream.Free;
 JP.Free;
end;

Последний раз редактировалось SERG1980; 14.10.2010 в 11:58.
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача скриншота с компа на телефон через интернет sum42 Помощь студентам 3 21.09.2009 14:42
передача скриншота olchick Работа с сетью в Delphi 13 04.06.2009 02:01
Программа для скриншота pix_l Общие вопросы Delphi 4 30.03.2009 15:56
Снятие скриншота в МСДОС Black_Ak24 Свободное общение 4 17.06.2008 19:03
Передача скриншота Terran Работа с сетью в Delphi 1 17.12.2007 21:41