浏览器打开本地软件
目录整体思路第一步注册 URL Protocol第二步C 程序接收参数第三步测试方式0 在浏览器地址栏输入 测试成功myapp://open?filehello.txt方式一直接使用 标签最简单方式二使用 JavaScript 点击事件整体思路网页点击链接myapp://open?filexxx→ Windows 注册表找到对应的协议处理器 → 启动你的 C 程序并把参数传进去。第一步注册 URL Protocol你需要先在 Windows 注册表中注册一个自定义协议比如myapp://。创建一个.reg文件比如install.reg内容如下regWindows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\myapp] MyApp Protocol URL Protocol [HKEY_CLASSES_ROOT\myapp\shell] [HKEY_CLASSES_ROOT\myapp\shell\open] [HKEY_CLASSES_ROOT\myapp\shell\open\command] \C:\\MyApp\\MyApp.exe\ \%1\双击运行这个.reg文件将协议写入注册表。注意把C:\MyApp\MyApp.exe换成你实际程序的路径。第二步C 程序接收参数当浏览器点击myapp://open?filetest.txt时系统会调用你的 exe并把完整 URL 作为命令行参数传入。下面是一个完整的 C 示例#include windows.h #include shellapi.h #include iostream #include string #include urlmon.h #pragma comment(lib, urlmon.lib) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 获取完整命令行 LPWSTR* szArgList; int argCount; szArgList CommandLineToArgvW(GetCommandLineW(), argCount); if (argCount 2) { MessageBoxW(NULL, L没有收到URL参数, L提示, MB_OK); LocalFree(szArgList); return 0; } // 参数格式: myapp://open?filetest.txtactionview std::wstring fullUrl szArgList[1]; LocalFree(szArgList); // 解析 URL简单示例只提取 file 参数 // 实际生产环境建议用 UrlUnescape 等更严谨的方法 std::wstring filePath; size_t pos fullUrl.find(Lfile); if (pos ! std::wstring::npos) { filePath fullUrl.substr(pos 5); // 去掉可能存在的后续 参数 size_t endPos filePath.find(L); if (endPos ! std::wstring::npos) { filePath filePath.substr(0, endPos); } // URL 解码把 %20 转成空格等 wchar_t decoded[1024] {0}; DWORD len 1024; UrlUnescapeW(filePath.c_str(), decoded, len, 0); filePath decoded; } // 显示接收到的信息模拟处理逻辑 std::wstring msg L接收到协议调用\n\n完整URL: fullUrl L\n\n解析出的文件: filePath; MessageBoxW(NULL, msg.c_str(), LMyApp 已唤起, MB_OK); // 这里可以写你的实际业务逻辑比如 // - 打开文件 // - 显示主窗口 // - 把文件路径传给主程序实例通过管道、共享内存、窗口消息等 return 0; }第三步测试编译上述代码生成MyApp.exe放到C:\MyApp\或你在注册表中指定的路径。方式0 在浏览器地址栏输入 测试成功myapp://open?filehello.txt方式一直接使用a标签最简单htmla hrefmyapp://open?filehello.txt打开 Bambu Studio/a方式二使用 JavaScript 点击事件htmlbutton οnclickopenBambu()打开 Bambu Studio/button script function openBambu() { window.location.href myapp://open?filehello.txt; } /script系统会弹出提示框显示解析出的信息。

相关新闻