Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Java remote desktop?


Автор: unkis 16.11.2006, 19:16
Ребята возможно ли реализовать при помощи java remote desktop, к примеру как MS Remote Desktop?
Если да то в какую сторону надо копать?

с начало я думал делать скриншоты экрана и отсылать их, но это уж слишком медленно.
Поэтому и спрашиваю есть ли возможность такое реализовать.

Заранее благодарен.

Автор: powerOn 16.11.2006, 21:51
Идея эта не нова, и вроде, здесь уже обсуждалась, смотри в сторону класса java.awt.Robot. Что еще кроме скринщота можно отправить, я пока не догадываюсь...

Автор: unkis 16.11.2006, 23:04
Слишком всё это медленно, я проверял получается что, в 1 секунду максимум 10-11 скриншотов можно сделать, размер экрана при этом 1028x800.
это только чтобы их сделать, а ещё их передать надо, во общем как-то всё это медленно.

я думаю что всё это как-то по другому должно решаться.

Автор: LSD 17.11.2006, 01:11
На чистой Java, это больше никак не решается. Если очень надо, то придется использовать C++.

Автор: Goliath 17.11.2006, 08:50
to LSD а можно более конкретней (в теории)

Автор: LSD 17.11.2006, 09:25
Берешь C++, пишешь на нем грабер экрана, затем с помощью http://vingrad.ru/JAVA-JAVA-001971 подключаешь к своей программе.

Автор: unkis 17.11.2006, 11:45
а что значит грабер экрана?

почему нельзя написать этот же грабе на Java?

что в данном случаи есть в c++ такое чего нет в Java?


Заранее благодарен

Автор: LSD 17.11.2006, 11:54
Цитата(unkis @  17.11.2006,  11:45 Найти цитируемый пост)
что в данном случаи есть в c++ такое чего нет в Java?

Возможность вызывать функции WinAPI.

Автор: unkis 17.11.2006, 12:10
А что значит грабер экрана и в чём отличие от обычного скриншота? 

Автор: LSD 17.11.2006, 12:52
Цитата(unkis @  17.11.2006,  12:10 Найти цитируемый пост)
А что значит грабер экрана и в чём отличие от обычного скриншота?

Грабер экрана это программа которая создает скриншот экрана smile

Автор: unkis 17.11.2006, 13:02
тогда я не понимаю какой смысл использовать здесь c++, если Java тоже может делать скриншоты?

Автор: LSD 17.11.2006, 13:21
Просто благодаря более тесной интеграции с ОС, на C++ можно сделать это быстрее. Ты же сам писал:
Цитата(unkis @  16.11.2006,  23:04 Найти цитируемый пост)
Слишком всё это медленно, я проверял получается что, в 1 секунду максимум 10-11 скриншотов можно сделать, размер экрана при этом 1028x800.


В частности не требуется преобразование картинки из формата ОС в формат Java. И его же сразу можно выводить на экран.

Автор: unkis 17.11.2006, 18:16
понятно.
тогда получается зависимость от платформы.

интересно а на c# это будет также как на c++ или тоже самое что и на Java?

Автор: LSD 17.11.2006, 18:33
C# достаточно плотно интегрирован с Windows, поэтому думаю что быстрее.

Автор: 3x3 17.11.2006, 21:19
Цитата(unkis @ 16.11.2006,  23:04)
Слишком всё это медленно, я проверял получается что, в 1 секунду максимум 10-11 скриншотов можно сделать, размер экрана при этом 1028x800.
это только чтобы их сделать, а ещё их передать надо, во общем как-то всё это медленно.

я думаю что всё это как-то по другому должно решаться.

Концептуально видится два подхода:
1.
Виндовс перерисовывает экран прямоугольными участками (окнами). Соответственно, если перехватить системный вызов, выводящий новое содержимое в эту область экрана, то достаточно отправить клиенту только этот апдейт. Вряд ли это решается джавой.

2.
Все вызовы рисования сводятся к вызову нескольких примитивных системных функций.. в смысле функций  для отрисовки примитивов - кружков, прямоугольничков, букв, картинок.. Можно перехватить их и отправлять на удаленного клиента просто коды этих вызовов и их параметры. Это более гибко. Но чтоб своё писать - опять же надо перехватывать вызовы.

Вариант 1 можно реализовать и без перехвата вызовов, на скриншотах - сравнивая каждый новый скриншот с предыдущим и определяя изменившиеся регионы. Но это даст только экономию трафика, зато придется сравнивать каждый раз много байтов, что ещё больше понизит частоту "кадров".



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)