Технологии, используемые в приложениях удаленного администрирования (не RD)
Я хочу знать, какие технологии используются в настоящее время в качестве основного механизма захвата экрана для программного обеспечения для удаленного администрирования, такого как
- VNC
- PcAnywhere
- TeamViewer
- RAC Remote
- администратор
- так далее..
Язык программирования не так важен, чтобы просто знать, нужно ли разрабатывать драйвер, который опрашивает видеопамять 30 раз в секунду, или в ядре Windows встроены какие-либо com-объекты, помогающие это сделать? Я не заинтересован в сторонних компонентах для этого. Должен ли я использовать средства DirectX? Просто хочу начать с разработки собственного движка захвата потока экрана, который будет меньше загружать процессор.
3 ответа
Когда дело доходит до VNC, есть несколько инструментов с открытым исходным кодом, которые совместимы с VNC, например, TightVNC и я думаю, UltraVNC, так что вы можете просто загрузить код и посмотреть.
Вот ссылка на скачивание источника TightVNC:
http://www.tightvnc.com/download/1.3.10/tightvnc-1.3.10_winsrc.tar.bz2
PcAnywhere и RDP используют пользовательские протоколы, которые пытаются передать как можно меньше данных - передавая, например, свойства окна и элемента управления (а не изображение окна) и позволяя клиенту визуализировать окно. Из-за этого очень сильно ориентирован на Windows (и не всегда отображает точно, что на экране). Они также предлагают больше безопасности.
VNC, с другой стороны, будучи гораздо более общим, просто передает растровые изображения (или png, jpeg или некоторую другую кодировку) экрана. Чтобы избежать передачи изображения всего экрана 30 раз в секунду, он отправляет только те области, которые изменились с момента последнего обновления.
DirectShow Filters, кажется, самый популярный способ сделать это. Посмотрите этот ответ, используя Windows Media Encoder для записи экрана. Там есть несколько хороших ссылок.
Windows Media Encoder SDK также является опцией, но требует, чтобы пользователь установил и настроил ее правильно. Поиск Bing или Google для "Windows Media Encoder SDK" и "Снимок экрана", вы должны увидеть довольно много сообщений на форуме.
Для метода получения большого количества скриншотов, статью о том, как это сделать, включая различные методы и источник, можно найти по адресу http://gpalem.web.officelive.com/screencap.html.
Справка UltraVNC немного рассказывает об их зеркальном видеодрайвере по адресу http://www.uvnc.com/onlinehelp/8.html. Это легкий на деталях, но дает подсказку о том, как они это делают.
Я верю, что ваш протокол будет сильно влиять на ваш захват. Вам нужен весь экран? Дельты? и т.д. Список основных протоколов коммерческих программ и программ с открытым исходным кодом можно найти по адресу: http://en.wikipedia.org/wiki/Remote_desktop_software
А исчерпывающий список программ, включая их протоколы и функции, можно найти по адресу... http://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software
Как он сказал, вы можете проверить, как это сделали другие. В зависимости от лицензии приложения, конечно. Вторая ссылка на Википедию содержит более 15 программ с открытым исходным кодом, использующих различные методы захвата / передачи экрана и протоколы.