Remote Control API или как запустить? - PullRequest
2 голосов
/ 18 мая 2009

Если при каких-либо изменениях я хочу разработать свой собственный инструмент удаленной помощи / совместного использования экрана, чтобы включить его в свою CRM, куда мне обратиться?

Я ничего не понимаю в общении, но я бы хотел вовлечь себя в такую ​​идею. У меня вопрос, что за базовые знания и базовая структура для создания LogMeIn / CoPilot / etc продукта?

Я помню, как Джоэл говорил о CoPilot в одном PodCast (несколько лет назад), что он использовал блестящего парня для разработки всего протокола на C ++ ...

есть какие-нибудь идеи о том, как этого добиться, или если меня ждет открытый API?

Ответы [ 3 ]

5 голосов
/ 22 сентября 2009

См. Эту статью под названием: Как работает VNC, Fog Creek Copilot и другое программное обеспечение для дистанционного управления .

Я приведу некоторые дополнительные подробности из того, что говорится в этом посте, но это более конкретно относится к исходному коду Fog Creek Copilot. Все эти данные были взяты из просмотра исходного кода.

По сути, Copilot не был написан с нуля на C ++, а был построен на основе TightVNC под GPL. Да, это означает, что основной источник Copilot также должен быть выдан. Вы можете получить исходный код Fog Creek для второго пилота здесь . И, насколько я понимаю, вы могли бы построить свое решение на основе исходного кода этого проекта, если вы также сделали его GPL.

Проект разделен на версию для Mac и версию для Windows. Версия для Mac встроена в цель C, а версия для Windows - в Win32 C ++ (не MFC). Для версии Windows есть решение Helper, созданное в VS 2008, и решение Host (хост - человек, которому помогают), созданное в VS 2008. Я думаю, что они не использовали Qt от Trolltech из-за большого размера ссылок, это было важно для них, чтобы сохранить загрузку очень маленькой, так как она должна была изначально загружаться всеми, кто помогает кому-то, и каждый, кто нуждался в помощи каждый раз

Конфигурации x64 и IA64 отсутствуют, поэтому весь код в Windows выполняется только как процесс x86. Он может работать в 64-битных окнах через WOW64, как и любой другой 32-битный процесс.

Как я понимаю, разработка была сделана с Хостом, работающим на ВМ, по большей части. Разработка Помощника была сделана на их рабочем столе.

Исходный код Copilot использует boost 1.38 и несколько других сторонних библиотек. Эти библиотеки включают STUNT для обхода NAT, MatrixSSL, libntlm (библиотека для проверки подлинности Microsoft NTLM) и omnithread (библиотека потоков и синхронизации).

По большей части он использует сокеты в стиле bsd, но также имеет некоторый сетевой код в boost :: asio. Это проблематично, потому что в boost :: asio 1.38 есть много ошибок, которые исправлены в boost 1.40. Проект также имеет Windows-хук для подключения клавиатуры, мыши и других оконных сообщений на хосте.

Существует проект оболочки, который не похож на оболочку Windows, но в основном содержит 3 двоичных файла: хост, удалитель и перехватывает DLL. Это извлекает это.

Что они не выдают, так это исходный код Reflector и веб-сайта, который, как я понимаю из некоторых сообщений в блоге на projectaardvark.com , они оба в C #, все остальное в C ++. Цель отражателя - помочь в прохождении NAT. Новый блог, который заменяет projectaardvark.com , кстати, называется Воздушное движение .

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

1 голос
/ 18 мая 2009

Посмотрите на программы VNC с открытым исходным кодом. Они позволяют защищенное паролем совместное использование экрана и просмотр

http://www.realvnc.com/vnc/index.html http://en.wikipedia.org/wiki/Virtual_Network_Computing http://libvncserver.sourceforge.net/

Надеюсь, VNC библиотеки и приложения помогут. Они используются в Windows и различных системах Unix.

0 голосов
/ 18 мая 2009

Вы можете взглянуть на элемент ActiveX Remote Desktop. В этом случае протокол RPC (хорошо задокументировано). Кроме того, оба уровня связи и удаленного пользовательского интерфейса сделаны для вас, вам просто нужно написать простой код оболочки пользовательского интерфейса.

...