主要参考
https://zhuanlan.zhihu.com/p/66145921
不过这个里面没有提及到,如何向本地应用传递参数。最简单的一种方式,就是把url通过命令行传递给应用程序。稍微改一下注册表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ptl]
@="URL:ptl Protocol Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\ptl\shell]
[HKEY_CLASSES_ROOT\ptl\shell\open]
[HKEY_CLASSES_ROOT\ptl\shell\open\command]
@="E:\Projects\test\Debug\test.exe \"%1\""
修改一下调用的网页
<body>
<a href="ptl://123">tim</a>
</body>
写一个最简单的命令行程序test.exe作为测试
int main(int argc, char *argv[])
{
printf("%d %s", argc, argc > 1 ? argv[1] : argv[0]);
int i;
scanf("%d", &i);
}
加入scanf一行是防止程序一下子退出了,看不到printf结果。运行结果为
2 ptl://123/
似乎系统总会在url的最后加上一个“/”。不过url传参方式,对参数的长度有限制,不能传太长。要传更多的参数,最好在exe程序起一个websocket的服务端,和网页进行websocket通信
网友评论