Webエンドコールexe実装
11079 ワード
1 URL Protocolレジストリ実装
url protocolを利用して、まずクライアントがレジストリの実現処理を行う必要があり、具体的にはテンセントの実現を参照することができる.
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\TENCENT] @=“TencentProtocol”“URL Protocol”=“D:\Program Files\Tencent\QQ\Timwp.exe” [HKEY_CLASSES_ROOT\TENCENT\DefaultIcon] @=“D:\Program Files\Tencent\QQ\Timwp.exe,1” [HKEY_CLASSES_ROOT\TENCENT\shell] [HKEY_CLASSES_ROOT\TENCENT\shell\open] [HKEY_CLASSES_ROOT\TENCENT\shell\open\command] @="“D:\Program Files\Tencent\QQ\Timwp.exe” “%1"”
この文書では、Windows Registry Editor Version 5.00をメモ帳で検証します.
[HKEY_CLASSES_ROOT\myprotocol] @=“myprotocol Protocol” “URL Protocol”=""
[HKEY_CLASSES_ROOT\myprotocol\DefaultIcon] @=“C:\WINDOWS\NOTEPAD.EXE”
[HKEY_CLASSES_ROOT\myprotocol\shell] @=""
[HKEY_CLASSES_ROOT\myprotocol\shell\open] @=""
[HKEY_CLASSES_ROOT\myprotocol\shell\open\command] @="“C:\WINDOWS\NOTEPAD.EXE” "
フロントエンドページエンドコール実装
パラメータを必要に応じて追加すれば、urlのパラメータ形式myprotocol://name=tomを参照できます.
jsで呼び出しがインストールされたかどうかは失敗してコールバックに成功し、プロジェクトで使用されているchromeは、一部の実装のみを抽出し、レジストリの読み取りに成功するとポップアップしてフォーカスを取得し、成功を確認するのが原理です.ソフトウェアがインストールされていないと考えられます.リファレンス実装:https://github.com/ismailhabib/custom-protocol-detection
url protocolを利用して、まずクライアントがレジストリの実現処理を行う必要があり、具体的にはテンセントの実現を参照することができる.
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\TENCENT] @=“TencentProtocol”“URL Protocol”=“D:\Program Files\Tencent\QQ\Timwp.exe” [HKEY_CLASSES_ROOT\TENCENT\DefaultIcon] @=“D:\Program Files\Tencent\QQ\Timwp.exe,1” [HKEY_CLASSES_ROOT\TENCENT\shell] [HKEY_CLASSES_ROOT\TENCENT\shell\open] [HKEY_CLASSES_ROOT\TENCENT\shell\open\command] @="“D:\Program Files\Tencent\QQ\Timwp.exe” “%1"”
この文書では、Windows Registry Editor Version 5.00をメモ帳で検証します.
[HKEY_CLASSES_ROOT\myprotocol] @=“myprotocol Protocol” “URL Protocol”=""
[HKEY_CLASSES_ROOT\myprotocol\DefaultIcon] @=“C:\WINDOWS\NOTEPAD.EXE”
[HKEY_CLASSES_ROOT\myprotocol\shell] @=""
[HKEY_CLASSES_ROOT\myprotocol\shell\open] @=""
[HKEY_CLASSES_ROOT\myprotocol\shell\open\command] @="“C:\WINDOWS\NOTEPAD.EXE” "
フロントエンドページエンドコール実装
パラメータを必要に応じて追加すれば、urlのパラメータ形式myprotocol://name=tomを参照できます.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>URL Protocol Test</title>
</head>
<body>
<h1><h1/>
<a href=myprotocol://>myprotocol</a>
</body>
</html>
jsで呼び出しがインストールされたかどうかは失敗してコールバックに成功し、プロジェクトで使用されているchromeは、一部の実装のみを抽出し、レジストリの読み取りに成功するとポップアップしてフォーカスを取得し、成功を確認するのが原理です.ソフトウェアがインストールされていないと考えられます.
function _registerEvent(target, eventType, cb) {
if (target.addEventListener) {
target.addEventListener(eventType, cb);
return {
remove: function () {
target.removeEventListener(eventType, cb);
}
};
} else {
target.attachEvent(eventType, cb);
return {
remove: function () {
target.detachEvent(eventType, cb);
}
};
}
}
function openUriWithHiddenFrame(uri, failCb, successCb) {
var timeout = setTimeout(function () {
failCb();
handler.remove();
}, 1000);
var iframe = document.querySelector('#hiddenIframe');
if (!iframe) {
iframe = _createHiddenIframe(document.body, 'about:blank');
}
var handler = _registerEvent(window, 'blur', onBlur);
function onBlur() {
clearTimeout(timeout);
handler.remove();
successCb();
}
iframe.contentWindow.location.href = uri;
}
function _createHiddenIframe(target, uri) {
var iframe = document.createElement('iframe');
iframe.src = uri;
iframe.id = 'hiddenIframe';
iframe.style.display = 'none';
target.appendChild(iframe);
return iframe;
}