![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте
написал простейший пример просмотра удаленного экрана, но работает он почему то слишком медленно порядка 3-4 кадра в секунду Использовал indy 10 может у этих компонентов как нибудь скорость передачи настраивается? Кстати делаю копию экрана меньше например 100*100 - работает гораздо быстрее код сервера: Код:
procedure TMForm.idTCPServer1Execute(AContext: TIdContext); var az:string; w,h,raz:integer; stream:tmemorystream; begin az:=Acontext.Connection.IOHandler.ReadLn; if az='Screen' then begin stream:=tmemorystream.Create; SImg:=TJpegImage.Create; BImg:=TBitmap.Create; w:=screen.Width; h:=screen.Height; bimg.Width:=w; bimg.Height:=h; bitblt(bimg.Canvas.Handle,0,0,w,h,getdc(0),0,0,srccopy); SImg.Assign(BImg); SImg.CompressionQuality:=70; SImg.Compress; simg.SaveToStream(stream); raz:=stream.Size; c.Connection.IOHandler.Write(raz); c.Connection.IOHandler.Write(stream); Bimg.free; stream.free; Simg.free; end; код клиента: Код:
procedure form1.Button1Click(Sender: TObject); begin var w,h,r:integer; j:Tjpegimage; b:tbitmap; stream:tmemorystream; begin stream:=tmemorystream.Create; j:=Tjpegimage.Create; b:=tbitmap.Create; while 1=1 do begin try idTCPClient1.connection.IOHandler.WriteLn('Screen'); r:=TCPClt[id].Clt.IOHandler.ReadInteger; stream.Position:=0; sleep(10); idTCPClient1.connection.IOHandler.ReadStream(stream,r); stream.Position:=0; j.LoadFromStream(stream); b.Assign(j); form1.image1.Picture.Bitmap:=b; stream.Clear; b.FreeImage; end; radmin же например как то работает быстренько помогите разобраться если знаете в чем проблема может на WinSock для этого нужно переделать? низнай будет быстрее работать Хочу все знать! Проблема в том что не хочу учиться ![]() |
#2
|
||||
|
||||
![]() для начала попробуй скриншоты конвертировать из BMP в JPG формат и тогда размер каждого кадра сократится с 3,5 метров до 300 килобайт...
|
#3
|
||||
|
||||
![]() Цитата:
Ты хоть полностью удосужился предыдущий пост прочитать ? ![]() 2 dixter - сам как-то писал подобное, но большей скорости чем у тебя так и не добился, даже используя jpeg. Похоже что используя стандартные TCPServer и TCPClient этого не сделать. Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#4
|
|||
|
|||
![]() Можно. У меня приятель писал такую штуку. Так вот в винде можно как-то зарегистрироваться, что она начинает присылать извещения об изменении на экране. При этом в этих извещениях указывает регион (размеры и позицию) области изменения. Так вот - можно слать не весь экран, а только изменения. Как сделать - меня не спрашивай, я в тонкости этого не вдавался, просто знаю, что такое есть.
ЗЫ. JPEG в дельфях не самый быстрый. Попробуй поискать другую библиотеку для сжатия изображений, м.б. даже в другой формат (я бы порекомендовал PNG). На этом тоже теряется изрядно времени. еще совет - слать не 24bit картнки, а "ужимать" их хотя бы до 256 цветов. Тоже поможет выиграть немного. |
#5
|
||||
|
||||
![]() когда то давненько тоже пробовал написать подобную программку, как и большинство забил...
В попытке помочь, могу предложить посмотреть: http://gribuser.ru/freeware/nethack/index.shtml исходник оч. старый и ни чего нового там нет, но тем кто только решил начать с программ удаленного администрирования, я думаю пойдет... Цитата:
P.S. или вот еще: http://www.kami-soft.nm.ru/Sources/Lan_Control2.zip Последний раз редактировалось SHKIP3R, 20.03.2009 в 13:17. |