我有一个这样的自定义uri:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Demo]
@="URL:Demo Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\Demo\DefaultIcon]
@="\"D:\\demo.bat\""

[HKEY_CLASSES_ROOT\Demo\shell]

[HKEY_CLASSES_ROOT\Demo\shell\open]

[HKEY_CLASSES_ROOT\Demo\shell\open\command]
@="\"D:\\demo.bat\" \"%1\" \"%2\" \"%3\" \"%4\""

为了从命令提示符处运行此命令,我使用以下命令:
D:\demo.bat -ping -ip 172.18.102.65
但是对于从浏览器运行相同的文件,如果我使用自定义URI作为Demo:,则要求我传递参数。如果从浏览器运行参数,我不知道如何将参数传递给自定义URI。

从浏览器运行此自定义uri时如何传递参数?请指教。

最佳答案

使用自定义URL时,整个URL将作为单个参数传递到已注册的应用程序/脚本。您的应用程序/脚本需要解析URL以提取所需内容。例如:

[HKEY_CLASSES_ROOT\Demo\shell\open\command]
@="\"D:\\demo.bat\" \"%1\""

您可以使用任何方式格式化URL,只要它是有效URL并以demo:开头即可,例如:
D:\demo.bat "demo:ping?ip=172.18.102.65"

D:\demo.bat "demo:ping=172.18.102.65"

D:\demo.bat "demo:ping%20172.18.102.65"

更新:但是,请注意,这仅适用于Internet Explorer(和Windows Explorer,以及Windows Shell)。您需要其他浏览器的另一种解决方案。例如,Firefox有其自己的协议(protocol)处理程序机制:

Web-based protocol handlers

Adding a New Protocol to Mozilla

Writing a Firefox Protocol Handler

09-19 12:03