如何从javascript启动程序/应用程序,就像某些站点打开torrent程序一样
我知道javascript不能在客户机上启动/打开/运行程序/应用程序。但我还是想知道如何打开一个程序。我知道浏览器的沙箱不允许javascript做这些事情,甚至javascript规范也没有在其规范中指定javascript支持的此类功能如何从javascript启动程序/应用程序,就像某些站点打开torrent程序一样,javascript,bittorrent,Javascript,Bittorrent,我知道javascript不能在客户机上启动/打开/运行程序/应用程序。但我还是想知道如何打开一个程序。我知道浏览器的沙箱不允许javascript做这些事情,甚至javascript规范也没有在其规范中指定javascript支持的此类功能 现在我想问一些网站如何能够启动安装在我机器上的torrent程序?通常,当我点击MagnetTorrent时,浏览器会显示一个对话框,显示是否启动应用程序。这些网站(如eBay等)是如何启动torrent程序的?您可能在谈论磁铁:协议。 要手动定义新协议
现在我想问一些网站如何能够启动安装在我机器上的torrent程序?通常,当我点击MagnetTorrent时,浏览器会显示一个对话框,显示是否启动应用程序。这些网站(如eBay等)是如何启动torrent程序的?您可能在谈论磁铁:协议。
要手动定义新协议并将程序绑定到它,您只需创建一个简单的注册表项。 查看我用来安装公司内部协议处理程序的C#代码段。
RegistryKey rk;
rk = Registry.ClassesRoot.CreateSubKey("NAMEOFPROTOCOL");
rk.SetValue("", "URL:NAMEOFPROTOCOL protocol"); // "" = (Standard)
rk.SetValue("URL Protocol", "");
rk = rk.CreateSubKey("shell");
rk = rk.CreateSubKey("open");
rk = rk.CreateSubKey("command");
rk.SetValue("", "FILEPATH" + @"""%1"""); // gives the XXX of protocol:XXX to the called program as first argument
注册表类位于命名空间“Microsoft.Win32”中。此代码需要管理员权限才能运行。
查看以下注册表项,我的默认Torrent客户端是Flouge,这是它在注册表中的外观:(HKEY_CLASSES_ROOT/magnet/…)
您可能在谈论磁铁:协议。
要手动定义新协议并将程序绑定到它,您只需创建一个简单的注册表项。 查看我用来安装公司内部协议处理程序的C#代码段。
RegistryKey rk;
rk = Registry.ClassesRoot.CreateSubKey("NAMEOFPROTOCOL");
rk.SetValue("", "URL:NAMEOFPROTOCOL protocol"); // "" = (Standard)
rk.SetValue("URL Protocol", "");
rk = rk.CreateSubKey("shell");
rk = rk.CreateSubKey("open");
rk = rk.CreateSubKey("command");
rk.SetValue("", "FILEPATH" + @"""%1"""); // gives the XXX of protocol:XXX to the called program as first argument
注册表类位于命名空间“Microsoft.Win32”中。此代码需要管理员权限才能运行。
查看以下注册表项,我的默认Torrent客户端是Flouge,这是它在注册表中的外观:(HKEY_CLASSES_ROOT/magnet/…)
您必须了解,没有用户交互(出于明显的安全原因),网页(理论上)无法在用户机器上启动程序 当您单击web链接时(例如,从http://或https://开始),您的浏览器知道如何处理该链接,并直接打开相关页面 当您单击以特定协议(如callto://或magnet://)开头的链接时,浏览器不知道如何处理它(至少第一次),因此会询问用户该怎么做。它通常显示兼容程序的列表 海盗湾只是使用magnet协议通知您的浏览器链接包含支持此协议的程序可以利用的信息
您可以使用JavaScript在自定义协议上模拟用户交互。例如,启动Skype呼叫:
window.location.href=callto://helloworld“
。同样的原理也适用于启动torrent下载(通过磁铁链接)。您必须了解,没有用户交互(出于明显的安全原因),网页(理论上)无法在用户机器上启动程序
当您单击web链接时(例如,从http://或https://开始),您的浏览器知道如何处理该链接,并直接打开相关页面
当您单击以特定协议(如callto://或magnet://)开头的链接时,浏览器不知道如何处理它(至少第一次),因此会询问用户该怎么做。它通常显示兼容程序的列表
海盗湾只是使用magnet协议通知您的浏览器链接包含支持此协议的程序可以利用的信息
您可以使用JavaScript在自定义协议上模拟用户交互。例如,启动Skype呼叫:
window.location.href=callto://helloworld“
。同样的原理也可以用于启动torrent下载(通过磁铁链接)。您可以将URL方案绑定到程序。这可能会对您有所帮助:您可以将URL方案绑定到程序。这可能会帮助您:Registry.ClassesRoot.CreateSubKey(“NAMEOFPROTOCOL”)的值是多少?是“磁铁”吗?第二行也是如此。磁石协议?或者myurl:magnet协议?FILEPATH的值是多少?它是torrent应用程序安装目录的路径吗?看看我的编辑,这就是它在注册表中的外观。是的,如果要将程序设置为“magnet”协议的处理程序,“NAMEOFPROTOCOL”应该是“magnet”。如果单击该协议的链接,文件路径将指向应该启动的应用程序。Registry.ClassesRoot.CreateSubKey(“NAMEOFPROTOCOL”)的值是多少?是“磁铁”吗?第二行也是如此。磁石协议?或者myurl:magnet协议?FILEPATH的值是多少?它是torrent应用程序安装目录的路径吗?看看我的编辑,这就是它在注册表中的外观。是的,如果要将程序设置为“magnet”协议的处理程序,“NAMEOFPROTOCOL”应该是“magnet”。Filepath指向在单击该协议的链接时应启动的应用程序。