web-dev-qa-db-fra.com

Lancement du schéma URI

On m'a confié la tâche de créer un protocole similaire à callto:, qui - en cliquant sur un lien avec celui-ci - lancerait automatiquement une application installée.

J'ai suivi le guide Microsoft sur la manière dont un schéma devrait ressembler.

Mon schéma ressemble à ceci:

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""

Je pensais que c'était tout et l'ai testé avec

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

Il n'y avait aucune réaction que ce soit. Internet Explorer m'a demandé si je souhaitais rechercher un programme capable d'ouvrir le contenu et Chrome n'a répondu par rien, comme si j'avais cliqué sur javascript: void (0).

Comment faire pour que ça fonctionne?

Merci de votre aide!

14
Sates

L’enregistrement que vous montrez fonctionne parfaitement pour moi lorsque j’essaie sous Windows 7. L’application locale que j’ai enregistrée à la place de SlicanP.exe a bien fonctionné lorsque j’ai invoqué une URL slican: à partir du menu Start | Run et à partir de la barre d’adresse de Windows Explorer. . Donc l'enregistrement fonctionne.

Sachez qu'Internet Explorer s'exécute dans un contexte de sécurité d'intégrité plus faible, de sorte qu'il n'est peut-être pas autorisé à exécuter des programmes locaux. Lorsque j'ai essayé de cliquer sur un lien HTML menant à une URL slican: ou de taper une URL slican: dans la barre d'adresse, IE a eu du mal à exécuter l'application locale (même après avoir demandé l'autorisation). Je devais exécuter IE en tant qu'administrateur, puis l'application locale fonctionnait parfaitement.

En outre, vous ne devriez pas créer directement de clé HKEY_CLASSES_ROOT\slican. Créez plutôt un HKEY_CURRENT_USER\Software\Classes\slican (utilisateur actuel) ou un HKEY_LOCAL_MACHINE\Software\Classes\slican (tous les utilisateurs). Reportez-vous à MSDN pour plus de détails:

Clé HKEY_CLASSES_ROOT

Vue fusionnée de HKEY_CLASSES_ROOT

Update: étant donné que cela fonctionne sous Windows 7, Microsoft a probablement modifié la manière dont les modèles d'URL sont enregistrés dans Windows 8. Par exemple, les applications de téléphone/de stockage utilisent l'activation d'URI:

Activation URI (XAML) .

Activation de l'URI (HTML)

La documentation indique qu'il existe deux méthodes pour enregistrer un schéma d'URI personnalisé:

Internet Explorer utilise deux mécanismes pour enregistrer de nouveaux gestionnaires de protocole enfichables. La première méthode consiste à enregistrer un nom de schéma URI et son application associée afin que toutes les tentatives de navigation vers un URI utilisant ce schéma lancent l'application (par exemple, en enregistrant des applications pour gérer des URI de type mailto: ou news:). La seconde méthode utilise l'API Asynchronous Pluggable Protocols, qui vous permet de définir de nouveaux protocoles en mappant le schéma d'URI à une classe.

Vous faites le premier. Essayez d'utiliser le second à la place.

Cependant, je viens de remarquer que "Protocoles enfichables asynchrones" est répertorié sur MSDN dans la section "API héritées", avec la remarque suivante: "Les implémentations de protocoles tiers ne seront pas chargées dans les applications du Windows Store utilisant JavaScript, ou dans Internet Explorer dans la nouvelle interface utilisateur Windows. ". Donc, cela peut ou peut ne pas fonctionner dans Windows 8.

Update: Je viens de trouver ceci:

Lignes directrices pour les types de fichiers et les URI

Dans Windows 8, la relation entre les applications et les types de fichiers qu'elles prennent en charge diffère de celle des versions précédentes de Windows. 

Procédure pas à pas: utilisation de l'activation de protocole personnalisé Windows 8

Le modèle d'association de type de fichier et de protocole a été modifié dans Windows 8. Les applications ne sont plus en mesure de se définir par programme comme gestionnaire par défaut pour un type de fichier ou un protocole. Au lieu de cela, maintenant, l'utilisateur contrôle toujours le gestionnaire par défaut pour un type de fichier ou un protocole.

Votre application peut utiliser des protocoles existants pour la communication, tels que mailto, ou créer un protocole personnalisé. L'extension d'activation de protocole vous permet de définir un protocole personnalisé ou un registre pour gérer un protocole existant.

Regardez aussi ceci:

Configuration de mailto: gestionnaire de protocole par programme dans Windows 8

Et ça:

Programmes par défaut

19
Remy Lebeau

si vous accédez à C:\Utilisateurs \\ AppData\Local\Google\Chrome\User Data

Vous pouvez éditer le fichier d'état local

Rechercher protocol_handler

La syntaxe ici est une paire clé-valeur. J'ai l'habitude de copier deux mailto: et de vous assurer que vos protocoles sont définis sur false. Cela signifiera que chrome traitera vos nouveaux protocoles comme des événements URI_Handler.

1
Andrei

Si vous rencontrez des problèmes lors de la configuration d'un schéma d'URI personnalisé, vous pouvez comparer votre propre configuration à celle existante. Par exemple, "HKEY_CLASSES_ROOT/mailto" - vous l'avez probablement déjà dans votre système.

0
kolobok