比如,自定义协议名称为 myapp,要启动的本地程序为 myapp.exe。
1)首先向注册表添加如下内容:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTmyapp] @="" "URL Protocol"="" [HKEY_CLASSES_ROOTmyappDefaultIcon] @="myapp.exe,1" [HKEY_CLASSES_ROOTmyappshell] [HKEY_CLASSES_ROOTmyappshellopen] [HKEY_CLASSES_ROOTmyappshellopencommand] @=""d:\myapp.exe" "%1""
2)用 VS 写一个本地程序 myapp.exe。我这里写的是一个WPF程序:
private void Window_Loaded(object sender, RoutedEventArgs e) { textBlock1.Text = string.Empty; string[] args = Environment.GetCommandLineArgs(); foreach (var arg in args) { textBlock1.Text += arg + " "; } }
3)在 web 页面启动 myapp.exe
function myAppTest() { window.location = 'myapp://openAppTest'; }
4) 在浏览器地址栏录入 myapp://openAppTest 也可以启动 myapp.exe
启动 myapp.exe 的效果如下:
myapp.exe 会获取到命令行参数:myapp://openAppTest/