为什么 windows 将完整的自定义 url 包括协议传递给处理应用程序?
Why does windows pass full custom url including protocol to handling application?
我正在尝试创建自己的 URL 协议以从我们内部 CRM 中的 URL 启动自定义应用程序。
我创建了以下注册表项:
REGEDIT4
[HKEY_CLASSES_ROOT\smon1]
@="URL:smon Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\smon1\shell]
[HKEY_CLASSES_ROOT\smon1\shell\open]
[HKEY_CLASSES_ROOT\smon1\shell\open\command]
@="\"C:\smon.exe\" \"%1\""
我的网站上有以下 link:
<a href='smon:1955'>1955</a>
我希望这会将变量 1955 传递给应用程序 c:\smon.exe。
但是它正在传递整个变量 "smon:1955".
为什么它传递所有内容而不是变量?
我在这里错过了什么?
你没有遗漏任何东西,这就是处理程序的工作方式;整个 URI 在命令行中传递。检测并解析它。
其基本原理大概是它允许多个协议与同一个可执行文件相关联,而无需在命令键中提供自定义区分开关。
举个例子
<a href="http://www.example.com">An Example</a>
这将传递给浏览器并在 url 栏中显示为 http://www.example.com
我正在尝试创建自己的 URL 协议以从我们内部 CRM 中的 URL 启动自定义应用程序。
我创建了以下注册表项:
REGEDIT4
[HKEY_CLASSES_ROOT\smon1]
@="URL:smon Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\smon1\shell]
[HKEY_CLASSES_ROOT\smon1\shell\open]
[HKEY_CLASSES_ROOT\smon1\shell\open\command]
@="\"C:\smon.exe\" \"%1\""
我的网站上有以下 link:
<a href='smon:1955'>1955</a>
我希望这会将变量 1955 传递给应用程序 c:\smon.exe。 但是它正在传递整个变量 "smon:1955".
为什么它传递所有内容而不是变量?
我在这里错过了什么?
你没有遗漏任何东西,这就是处理程序的工作方式;整个 URI 在命令行中传递。检测并解析它。
其基本原理大概是它允许多个协议与同一个可执行文件相关联,而无需在命令键中提供自定义区分开关。
举个例子
<a href="http://www.example.com">An Example</a>
这将传递给浏览器并在 url 栏中显示为 http://www.example.com