自定义协议处理程序在铬

如何在Chrome中设置自定义协议处理程序? 就像是:

myprotocol:// testfile的

我需要这个发送请求到http://example.com?query=testfile ,然后发送httpresponse到我的扩展。

Chrome 13现在支持navigator.registerProtocolHandler API。 例如,

 navigator.registerProtocolHandler( 'web+custom', 'http://example.com/rph?q=%s', 'My App'); 

请注意,你的协议名称必须以web+开头,除了一些常见的例外(如mailto等)。 有关更多详细信息,请参阅: http : //updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler

以下方法将应用程序注册到URIscheme。 所以,你可以使用mycustproto:在你的HTML代码中触发一个本地应用程序。 它可以在Google Chrome 51.0.2704.79 m(64位)上运行。

我主要使用这种方法来静默打印文档,而不popup打印对话框。 结果非常好,是一个将外部应用程序与浏览器集成的无缝解决scheme。

HTML代码(简单):

 <a href="mycustproto:Hello World">Click Me</a> 

HTML代码(可选):

 <input id="DealerName" /> <button id="PrintBtn"></button> $('#PrintBtn').on('click', function(event){ event.preventDefault(); window.location.href = 'mycustproto:dealer ' + $('#DealerName').val(); }); 

URI Scheme如下所示:

您可以在registry中手动创buildURI Scheme,也可以运行“mycustproto.reg”文件(见下文)。

 HKEY_CURRENT_USER\Software\Classes mycustproto (Default) = "URL:MyCustProto Protocol" URL Protocol = "" DefaultIcon (Default) = "myprogram.exe,1" shell open command (Default) = "C:\Program Files\MyProgram\myprogram.exe" "%1" 

mycustproto.reg例子:

 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\mycustproto] "URL Protocol"="\"\"" @="\"URL:MyCustProto Protocol\"" [HKEY_CURRENT_USER\Software\Classes\mycustproto\DefaultIcon] @="\"mycustproto.exe,1\"" [HKEY_CURRENT_USER\Software\Classes\mycustproto\shell] [HKEY_CURRENT_USER\Software\Classes\mycustproto\shell\open] [HKEY_CURRENT_USER\Software\Classes\mycustproto\shell\open\command] @="\"C:\\Program Files\\MyProgram\\myprogram.exe\" \"%1\"" 

C#控制台应用程序 – myprogram.exe:

 using System; using System.Collections.Generic; using System.Text; namespace myprogram { class Program { static string ProcessInput(string s) { // TODO Verify and validate the input // string as appropriate for your application. return s; } static void Main(string[] args) { Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine); Console.WriteLine("\n\nArguments:\n"); foreach (string s in args) { Console.WriteLine("\t" + ProcessInput(s)); } Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); } } } 

尝试先运行该程序,以确保程序已放置在正确的path中:

 cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World" 

点击您的HTML页面上的链接:

您将会看到第一次popup警告窗口。

在这里输入图像说明

在Chrome中重置外部协议处理程序设置:

如果您曾经在Chrome中接受过自定义协议,并想要重置设置,请执行此操作(目前,Chrome中没有用户界面来更改设置):

在这个path下编辑“ Local State ”这个文件:

 C:\Users\Username\AppData\Local\Google\Chrome\User Data\ 

或者只需转到:

 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\ 

然后,search这个string: protocol_handler

您将从那里看到自定义协议。

注意:在编辑文件之前请closures您的Google Chrome浏览器。 否则,您所做的更改将被Chrome覆盖。

参考:

https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

现在这个问题已经很老了,但是最近Chrome已经有了一个更新(至less在打包的应用程序方面)…

http://developer.chrome.com/apps/manifest/url_handlers

https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/url-handler

它允许你注册一个URL处理程序(只要你拥有它)。 可悲的是没有我的myprotocol://但至less你可以做http://myprotocol.mysite.com并可以创build一个网页,指向人在应用程序商店的应用程序。

我就是这么做的 你的应用程序需要安装几个registry键,然后在任何浏览器中,你可以链接到foo:\ anythingHere.txt,它会打开你的应用程序,并传递它的价值。

这不是我的代码,只是在search同一个问题时在网上find的东西。 只需将下面的文本中的所有“foo”更改为所需的协议名称,并将path更改为您的exe文件。

(把它放在一个文本文件中,保存为桌面上的foo.reg,然后双击它来安装键)—–这行下面是.reg文件(不包括这行)— —

 REGEDIT4 [HKEY_CLASSES_ROOT\foo] @="URL:foo Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\foo\shell] [HKEY_CLASSES_ROOT\foo\shell\open] [HKEY_CLASSES_ROOT\foo\shell\open\command] @="\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\" \"%1\"" 
Interesting Posts