У меня есть проблема, которая сводит меня с ума. Мне удалось успешно подключить сеанс teamviewer из uri браузера к моему требуемому удаленному ресурсу. Я достигаю этого, используя следующую команду uri в адресной строке браузера (на самом деле это нажатие кнопки в html):
- teamviewer8://пульт дистанционного управления?connectcc=123456789
Хотя это прекрасно соединяется, как требуется, это представляет проблему, которую мне нужно решить.
Проблема
Если соединение еще не открыто, сеанс teamviewer инициируется, и окно появляется на моем втором мониторе по мере необходимости. Все хорошо. Однако, если сеанс уже запущен, и я инициирую последующий запрос к тому же uri, создается новый сеанс, и у меня остается несколько дублирующихся окон сеанса. Это требует больших ресурсов в долгосрочной перспективе и нежелательно на практике.
Мое идеальное решение
В идеале я хотел бы, чтобы процесс функционировал так, чтобы вызывался новый сеанс, если он еще не имеет заданного идентификатора. Если запущен более ранний сеанс с этим идентификатором, я хотел бы найти способ привлечь к этому внимание, а не заставлять teamviewer создавать новый сеанс.
Что я уже знаю
Я знаю, что это возможно, поскольку консоль teamviewer делает именно это, если вы пытаетесь инициировать второй сеанс с уже запущенным идентификатором. Использование консоли teamviewer не вариант, так как я разработал веб-решение для рабочего стола, которое требует, чтобы сеансы запускались с помощью нажатия кнопки внутри пользовательского интерфейса (идентификаторы хранятся в моей собственной базе данных).
Приложение, которое я создал, может буквально открывать сотни дубликатов окон, поскольку я просматриваю множество процессов в небольшом диапазоне идентификаторов в течение концентрированного периода времени, поэтому срочно требуется решение.
Итог
Можно ли добавить параметр в uri, чтобы указать teamviewer не создавать новый сеанс. Есть ли простой переключатель, который я упустил, который решит проблему??
Спасибо за чтение...
[edit] - хотя вряд ли это имеет какое-либо значение, я использую asp.net mvc для приложения. Я добавляю эту информацию, так как вполне может быть, что конвейер http добавляет/кеширует что-то, что teamviewer интерпретирует как уникальный идентификатор.
[Обновление]
После тщательного рассмотрения и безрезультатных поисков я решил создать собственное прокси-приложение и зарегистрировать его с протоколом по своему выбору. Это прокси-приложение вызывается с теми же параметрами, что и протокол teamviewer, то есть arb://remotecontrol?connectcc=123456789. Мое маленькое приложение имеет внутренний словарь и выполняет поиск по заголовкам окон в словаре. если он находит совпадение, он переводит окно в фокус, если нет, он выполняет Process.Start() с использованием протокола teamviewer, а затем добавляет данные в словарь. есть и другие проверки, но пока это работает нормально.
Я использовал эти ссылки для первоначального вдохновения:
- http://msdn.microsoft.com/en-us/library/aa767914%28VS.85%29.aspx
- http://www.openwinforms.com/run_exe_from_javascript.html
Надеюсь, это поможет всем, кому нужно обойти этот сценарий в любой ситуации.
teamviewer "connectcc"
и смог найти анализ строк исполняемого файла TeamViewer. Это полный снимок в темноте, но там есть несколько строк, которые вы могли бы использовать для прямого указания фактического сеанса - возможно, это предотвратит дублирование. Это:connectsid
,session
иsessionID
. Как я уже сказал, это дикая догадка, но на самом деле не так много, чтобы продолжать. - person John H   schedule 06.03.2014