web-dev-qa-db-ja.com

URIスキームの起動

Callto:に似たプロトコルを作成するタスクが与えられました。つまり、リンクをクリックすると、インストールされているアプリケーションが自動的に起動します。

スキームがどのように見えるべきかについて Microsoftガイド に従いました。

私のスキームは次のようになります:

HKEY_CLASSES_ROOT
   slican
       URL Protocol = ""
       DefaultIcon (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe,1"
       Shell
            open
                command (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe" "%1""

私はそれですべてだと思い、それをテストしました

 <a href="slican:test">test link</a>
 <a href="slican:0049325778421">test telephone link</a>

全く反応がありませんでした。 Internet Explorerから、コンテンツを開くことができるプログラムを検索するかどうか尋ねられ、Chromeはjavascript:void(0)をクリックしたかのように何も応答しませんでした。

それを機能させるには?

ご協力ありがとうございました!

17
Sates

Windows 7で試したところ、表示された登録は完全に問題なく機能しました。SlicanP.exeの代わりに登録したローカルアプリは、slican:メニューからStart | Run URLを呼び出すと正常に動作し、 Windowsエクスプローラのアドレスバーから。したがって、登録は機能します。

Internet Explorerは整合性の低いセキュリティコンテキストで実行されるため、ローカルプログラムを実行する権限がない可能性があることに注意してください。 slican: URLへのHTMLリンクをクリックするか、アドレスバーにslican: URLを入力しようとすると、IEでローカルアプリを実行できませんでした(許可を求めた後)IEを管理者として実行する必要がありましたが、ローカルアプリは問題なく実行されました。

また、HKEY_CLASSES_ROOT\slicanキーを直接作成しないでください。代わりにHKEY_CURRENT_USER\Software\Classes\slican(現在のユーザーのみ)またはHKEY_LOCAL_MACHINE\Software\Classes\slican(すべてのユーザー)を作成してください。詳細については、MSDNを参照してください。

HKEY_CLASSES_ROOTキー

HKEY_CLASSES_ROOTのマージされたビュー

Update:Windows 7で動作するため、MicrosoftはおそらくWindows 8でのURLスキームの登録方法を変更しました。たとえば、電話/ストアアプリはURIアクティベーションを使用します。

RIアクティベーション(XAML)

RIアクティベーション(HTML)

ドキュメント は、カスタムURIスキームを登録する方法が2つあると述べています。

Internet Explorerは、新しいプラグ可能なプロトコルハンドラーを登録するために2つのメカニズムを使用します。最初の方法は、URIスキーム名とそれに関連付けられたアプリケーションを登録して、そのスキームを使用してURIに移動しようとすると、すべてアプリケーションが起動するようになります(たとえば、mailto:またはnews:URIを処理するアプリケーションの登録)。 2番目の方法では、非同期プラグ可能なプロトコルAPIを使用します。これにより、URIスキームをクラスにマッピングすることにより、新しいプロトコルを定義できます。

あなたが最初にやっています。代わりに2番目を使用してみてください。

ただし、「非同期プラグ可能プロトコル」がMSDNの「レガシーAPI」セクションにリストされていることに気付いたばかりであり、次の注記があります。

サードパーティのプロトコル実装は、JavaScriptを使用するWindowsストアアプリ、または新しいWindows UIのInternet Explorerに読み込まれません。

したがって、Windows 8では動作する場合と動作しない場合があります。

更新:私はこれを見つけました:

ファイルタイプとURIのガイドライン

Windows 8では、アプリとそれらがサポートするファイルタイプの関係は、以前のバージョンのWindowsとは異なります。

ウォークスルー:Windows 8カスタムプロトコルアクティベーションを使用

Windows 8では、ファイルの種類とプロトコルの関連付けモデルが変更されました。アプリをプログラムでファイルの種類またはプロトコルの既定のハンドラーとして設定することはできなくなりました。代わりに、ユーザーは常にファイルタイプまたはプロトコルのデフォルトハンドラを制御します。

アプリは、mailtoなどの既存の通信プロトコルを使用するか、カスタムプロトコルを作成できます。プロトコルアクティベーション拡張機能を使用すると、カスタムプロトコルを定義したり、既存のプロトコルを処理するように登録したりできます。

これも見てください:

mailtoの設定:プログラムでWindows 8のプロトコルハンドラー

この:

デフォルトのプログラム

23
Remy Lebeau

c:\ Users \\ AppData\Local\Google\Chrome\User Dataに移動した場合

ローカル状態ファイルを編集できます

Protocol_handlerを検索します

ここの構文はキーと値のペアです。私は通常2つのmailto:をコピーし、プロトコルをfalseに設定していることを確認します。これは、chromeが新しいプロトコルをURI_Handlerイベントとして扱うことを意味します

1
Andrei

カスタムURIスキームの構成に問題がある場合は、独自の構成を既存の構成と比較できます。たとえば、「HKEY_CLASSES_ROOT/mailto」-ほとんどの場合、システムにすでに存在しています。

0
kolobok