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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 23:58   #1
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию Удалённый просмотр

Здраствуйте, учусь работать с компонентами clientsocket и serversocket
но пока безрезультатно...
Вообшем задача такая: есть удалённый компьютер, на нём программа которая делает скриншоты экрана по таймеру, и сжимает в поток..

Я, на своём компьютере, когда хочу, подключаюсь к удалённому компьютеру, введя его IP, и принимаю потоки (скриншоты) его экрана.
В свою очередь поток разворачиваеться к примеру в компоненте Image и я вижу что происходит на удалённом компьютере практически в режиме реального времени...
Я знаю что такое есть, но хочу написать сам эти две программы.
Помогите пожалуйста кодом: мне надо:
Снятие скриншота и сжатие в поток
передача потока если я подключен
приём потока на мой компьютер и раскрытие его...
на другом форуме мне ответа не дали.
заранее благодарен за помошь...
nikityan вне форума Ответить с цитированием
Старый 22.12.2011, 00:11   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Снимаешь скриншот(На этом форуме, ответов валом на эту тему).
Сохраняекшь не в файл а в TStream(TFileStream)
Сжимаешь этот TStream алгоритмом Zlib или zLibEx(ищем в интернетах).
Далее полученный стим по кускам передаёшь на сервер(SendBuffer или SendBuf уже не помню).
По кускам очень просто, просто пишиль Stream в буфер из байт размером... 64*1024*1024(64 кб).
Код:
const
  BUFF_SIZE = 64*1024*1024;
var
 fs:TfileStream;
i:Integer;
Buff:array[0..BUFF_SIZE] of Byte;
begin
 
 fs.Seek(0, SoFromBegining);
 repeat
 ZeroMemory(@Buff,SizeOf(Buff)); //занулим буфер
 fs.position:=fs.Read(Buff,BUFF_SIZE); //прочитаем кусочег, запилим позицию
 ClientSck.SendBuf(@Buff,...); //Отправка в общем ;)
 until fs.Position = fs.size; //пока не выпилили весь стрим 
 {LOL!}
end;
На сервере открываешь стрим, и записывашь туда прилетаемые куски буфера.
Сохраняешь стрим в файл(если надо), а не надо, то и сразу Image.LoadFromStream вот и всО.

Мо поводу сжатия:
Сжимать можно весь стрим, ещё перед отправкой, и можно сжимать тока буффер который посылаешь, и расжимать его на сервере.

Ещё нужно учесть обрыв связи с сервером и много чего ещё....

Последний раз редактировалось Человек_Борща; 22.12.2011 в 00:18.
Человек_Борща вне форума Ответить с цитированием
Старый 22.12.2011, 06:31   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

http://www.delphimaster.ru/cgi-bin/f...1227604925&n=4
http://www.delphimaster.ru/cgi-bin/f...322308094&n=18
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 23.12.2011, 19:22   #4
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

fs.Seek(0, SoFromBegining); ошибка на этой строчке
nikityan вне форума Ответить с цитированием
Старый 23.12.2011, 19:26   #5
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

сохраняю как stream а выдаёт ошибку при включении таймера JpgImg.SaveToStream(fs);

Последний раз редактировалось nikityan; 23.12.2011 в 19:38.
nikityan вне форума Ответить с цитированием
Старый 23.12.2011, 19:37   #6
pr12msyn
Заблокирован
 
Регистрация: 21.12.2011
Сообщений: 1
По умолчанию

Thank you for sharing. success in the new studies
pr12msyn вне форума Ответить с цитированием
Старый 23.12.2011, 21:47   #7
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

написал программу для снятия скриншотов и отправки на другой комп.
когда нажимаю кнопку принять то на другой стороне вылетает ошибка...
чувствую что не хочет сохранять скриншот как memory stream
посмотрите пожалуйста...
Вложения
Тип файла: rar Передатчик.rar (256.5 Кб, 46 просмотров)
Тип файла: rar Приём.rar (286.9 Кб, 37 просмотров)
nikityan вне форума Ответить с цитированием
Старый 24.12.2011, 00:32   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Offtopic (не удержался)

Здраствуйте, учусь работать с молотком
но пока безрезультатно...
Вообшем задача такая: есть гараж и надо собрать автомобиль...

Помогите кто чем может, сами мы не местные.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 24.12.2011, 14:34   #9
nikityan
Заблокирован
 
Регистрация: 07.10.2011
Сообщений: 48
По умолчанию

Сделал я программу, могу просматривать удалённый рабочий стол, правда в паршивом качестве...
как сделать что б я мог, управлять мышью удалённого компьютера, к примеру нажимав на картинку и там срабатывало нажатие???
nikityan вне форума Ответить с цитированием
Старый 25.12.2011, 15:38   #10
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

какой интерес вам в этом? вы ее не продадите никому, даже не надейтесь. винда имеет свой рдп и ваша программулька с таким огромным траффиком никому не нужна.
Про удаленное нажатие клавиш это уже другой вопрос, и весьма сложный.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалённый доступ к реестру Gert Общие вопросы Delphi 6 24.04.2012 07:43
Как востановить случайно удалённый обьект в с++ билдере sigmanen C++ Builder 1 06.12.2010 20:39
Интересно почему плеер открывает удалённый фильм Altera Свободное общение 2 09.02.2010 22:23
Как перенести сайт на удалённый сервер? Xeon332 Свободное общение 6 13.07.2008 20:56
Как выключить удалённый компьютер c помощью Server Socket. muravey Работа с сетью в Delphi 3 09.11.2007 08:09