4

我有一个让我发疯的问题。我已经成功地将我的 teamviewer 会话从浏览器 uri 连接到我所需的远程资源。我通过在浏览器地址栏中使用以下 uri 命令来实现这一点(实际上,它是在 html 中单击按钮):

  • teamviewer8://remotecontrol?connectcc=123456789

尽管这可以根据需要完美连接,但它提出了一个我需要解决的问题。

问题

如果连接尚未打开,则会启动 teamviewer 会话,并根据需要在我的第二个监视器中弹出窗口。都好。但是,如果会话已经在运行并且我向同一个 uri 发起后续请求,则会生成一个新会话,并且我会留下多个重复的会话窗口。从长远来看,这既是资源匮乏的,在实践中也是不可取的。

我的理想解决方案

理想情况下,我希望该进程能够运行,以便在没有给定 id 已经运行的情况下调用新会话。如果具有该 ID 的较早会话正在运行,那么我想找到一种方法来关注它,而不是让 teamviewer 新建一个新会话。

我已经知道的

我知道这是可能的,因为如果您尝试针对已经运行的 id 启动第二个会话,teamviewer 控制台就会这样做。使用 teamviewer 控制台不是一个选项,因为我开发了一个基于 Web 的桌面解决方案,该解决方案需要通过UI 内的按钮单击来启动会话(ID 存储在我自己的数据库中)。

我创建的应用程序有可能会打开数百个重复的窗口,因为我正在集中时间查看一小部分 id 的许多进程,因此迫切需要一个解决方案。

底线

是否可以在 uri 中添加一个参数来告诉teamviewer 不要创建新会话。是否有一个我缺少的简单开关可以解决这个问题?

谢谢阅读...

[编辑] - 虽然不太可能对事情产生任何影响,但我正在使用 asp.net mvc 进行应用程序。我添加了这个信息,因为它很可能是 http 管道正在添加/缓存一些被 teamviewer 解释为 uniq 标识符的东西。

[更新]

经过仔细考虑和无果的搜索,我决定创建自己的代理应用程序并使用我自己选择的协议注册它。使用与 teamviewer 协议相同的参数调用此代理应用程序,即 arb://remotecontrol?connectcc=123456789。我的小应用程序有一个内部字典,并在字典中搜索窗口标题。如果找到匹配项,则使窗口成为焦点,如果没有,则使用 teamviewer 协议执行 Process.Start(),然后将数据添加到字典中。还有其他一些检查,但到目前为止效果很好。

我使用这些链接来获得最初的灵感:

希望这可以帮助其他任何需要在任何情况下需要解决这种情况的人。

4

0 回答 0