Chromeでカスタムプロトコルハンドラーを設定するにはどうすればよいですか?何かのようなもの:
myprotocol:// testfile
http://example.com?query=testfile にリクエストを送信し、拡張機能にhttpresponseを送信するには、これが必要です。
次のメソッドは、アプリケーションをURIスキームに登録します。したがって、HTMLコードでmycustproto:を使用して、ローカルアプリケーションをトリガーできます。 Google Chromeバージョン51.0.2704.79 m(64ビット)で動作します。
私は主に、印刷ダイアログを表示せずにドキュメントを静かに印刷するためにこの方法を使用しました。結果はかなり良く、外部アプリケーションとブラウザを統合するシームレスなソリューションです。
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スキームは次のようになります:
レジストリでURIスキームを手動で作成するか、「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();
}
}
}
最初にプログラムを実行して、プログラムが正しいパスに配置されていることを確認してください:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
HTMLページのリンクをクリックします:
警告ウィンドウのポップアップが初めて表示されます。
Chromeの外部プロトコルハンドラー設定をリセットするには:
Chromeでカスタムプロトコルを受け入れ、設定をリセットしたい場合は、これを行います(現在、Chrome設定):
このパスの下にある「Local State」ファイルを編集します。
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
または単に以下にアクセスしてください:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
次に、この文字列を検索します:protocol_handler
そこからカスタムプロトコルが表示されます。
注:ファイルを編集する前に、Googleを閉じてくださいChrome。クロム。
参照:
https://msdn.Microsoft.com/en-us/library/aa767914(v = vs.85).aspx
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
この質問は今では古いものですが、Chrome(少なくともパッケージ化されたアプリが関係している場合))に最近更新されました...
http://developer.chrome.com/apps/manifest/url_handlers
そして
https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/url-handler
(所有している限り)URLのハンドラを登録できます。悲しいことにmyprotocol://
しかし、少なくともあなたはhttp://myprotocol.mysite.com
そして、そこにWebサイトを作成して、アプリストア内のアプリをユーザーに示すことができます。
これが私がやった方法です。アプリは、インストール時にいくつかのregキーをインストールする必要があります。その後、任意のブラウザーでfoo:\ anythingHere.txtにリンクするだけで、アプリを開いてその値を渡すことができます。
これは私のコードではなく、同じ質問を検索したときにウェブ上で見つけたものです。以下のテキストのすべての「foo」を目的のプロトコル名に変更し、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\""
開いた
C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default
Preferences
を開いてからexcluded_schemes
を検索すると、 'protocol_handler'でこの除外スキームを削除してリセットしますchromeデフォルトのアプリケーションでURLを開きます