2010-09-13 2 views
0

Les programmes pour MS Windows peuvent associer certains protocoles à ces protocoles. Donc, lorsque vous cliquez dans le navigateur, le programme enregistré pour le protocole "myprotocol" sera ouvert. Comme "mailto: [email protected]" ouvre votre programme Email.Détecter les protocoles enregistrés dans Windows à partir de la page Web à l'aide de IE

J'ai un site Web et je veux savoir si les visiteurs de mon site web ont enregistré un protocole dans leur système ou non. Donc, quand il clique sur le lien et n'a pas de protocole enregistré une page comme "S'il vous plaît, installez mon programme". Sinon, le programme enregistré démarre. Comment puis-je faire cela avec javascript ou avtiveX ou autre chose?

Je sais comment faire pour Firefox et Crome (en utilisant l'en-tête "Location" et iframe), mais je ne sais pas comment le faire pour IE et Opera. Aidez-moi, s'il vous plaît.

+0

Pourriez-vous expliquer comment vous intercepter ce dans Firefox/Chrome? Je pense que ActiveX est votre seule option car les navigateurs ont tendance à essayer de sécuriser JavaScript et de ne pas le laisser accéder aux informations comme vous le souhaitez. – palswim

Répondre

0

J'ai fait ce genre de chose une fois. Ce que j'ai fait, dans l'installateur, j'ai enregistré une clé MyProgram.IsInstalled dans HKEY_CLASSES_ROOT avec le même CLSID que Scripting.Dictionary. Puis, en JavaScript, j'ai essayé de faire un var isInstalled = new ActiveXObject("MyProgram.IsInstalled");. Si cela a fonctionné, mon programme a été installé (et j'ai eu une nouvelle instance Scripting.Dictionary pratique que j'ai jetée rapidement). Si ce n'était pas le cas, eh bien, ce n'était pas le cas.

0

La détection directe de arbitraires protocoles dans IE n'est pas actuellement possible, parce que nous continuons à couper mon API proposé pour cela. Vous devez actuellement utiliser un contrôle ActiveX à cette fin.

Pour les protocoles spécifiques, vous devez simplement enregistrer votre composant avec un vecteur de version qui peut alors être détectée par des commentaires conditionnels: http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx

Questions connexes