【问题标题】:Open client's desktop application from web page link从网页链接打开客户端的桌面应用程序
【发布时间】:2014-12-23 15:40:40
【问题描述】:

是否可以从网络启动客户端桌面应用程序,例如 Adobe Reader、任何游戏或任何其他软件

我有一个链接How to launch an EXE from Web page (asp.net)

其中一个已经让位于使用仅限于 IE 的 java 脚本打开记事本(桌面应用程序)。

以类似的方式,我想在我的网页上创建这样的链接,这样如果用户点击这些链接,就像

例如,如果用户点击链接“Adobe Reader”,那么 Adob​​e 应用程序应该会打开/启动。

有什么方法可以从网络打开任何桌面应用程序?

我遇到了签名小程序的概念,我们将在网页中调用已签名的小程序,即使用 tag , & inside

applet 我们将调用桌面应用程序。

通过使用小程序的方式,我创建了一个签名的小程序,并且我可以通过在小程序中直接提供这样的路径来打开记事本应用程序:

Process process = new ProcessBuilder("C:\\Windows\\notepad.exe").start();

但是我怎样才能以通用方式做到这一点,这意味着记事本应用程序或任何其他软件都可以安装在系统的任何地方。

所以我们不会知道应用程序的安装路径,那么有什么方法可以通过提供这样的服务名称来将它们作为服务启动??

Process process = new ProcessBuilder("notepad.exe").start();

【问题讨论】:

标签: java web applet desktop-application signed-applet


【解决方案1】:

我通过将目标应用程序注册为协议处理程序来处理此问题,无论是目标应用程序本身,还是保证安装在客户端计算机上的委托应用程序。

然后使用以下形式的链接:myapp://someaction/arg0/arg1

然后 myapp://someaction/arg0/arg1 将作为命令行参数传递给您的应用,然后您可以解析并执行适当的操作。

这是一篇关于如何实现这一目标的 MSDN 文章:http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx

所以在你的情况下,你可以:

  • 制作一个脚本/注册表键,为目标应用程序注册协议,并让客户端下载并安装它。然后您可以使用例如添加可以从网页启动myapp://reader/
  • 创建一个应用程序(处理程序)并让客户端安装它,然后处理程序将从 URL 获取目标应用程序,例如 myapp://reader/document 或只是 myapp://reader 在客户端计算机上打开“Adobe Reader”。

如果您想根据 url 中指定的参数执行更多操作,则第二种方法特别有用。

【讨论】:

  • 在我的情况下桌面应用程序已经安装,我只需要从网页链接启动它们。
  • 使用这种方法,您需要按照上面的 MSDN 文档在客户端机器上的 HKEY_CLASSES_ROOT 中将应用程序注册为协议处理程序,然后使用 myapp:/ 添加指向您网页的链接/anything 并且浏览器将打开您的应用程序。
  • 如果应用是你的,你可以让它自己注册
  • 嘿,我可以通过直接提供如下路径来打开记事本应用程序: Process process = new ProcessBuilder("C:\\Windows\\notepad.exe").start();
  • 但是我怎样才能以通用的方式做到这一点,这意味着记事本应用程序或任何其他软件都可以安装在系统的任何位置。所以我们不会知道应用程序的安装路径,所以有什么方法可以通过以下方式启动它们,即使用服务名称。进程进程 = new ProcessBuilder("notepad.exe").start();
猜你喜欢
  • 1970-01-01
  • 2011-01-14
  • 2013-03-13
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多