C++如何从自定义URL Scheme获取参数替换代码中的硬编码值
C++ MFC程序获取URL Scheme动态参数解决方案
实现逻辑
你使用的是MFC框架,可直接通过MFC内置的全局方法获取命令行参数,无需引入额外依赖,具体修改如下:
找到原有代码中硬编码的m_code = _T("pippo");行,将其替换为以下代码:
CString cmdLine = AfxGetApp()->m_lpCmdLine; // 移除参数两侧的引号(注册表配置会自动给参数加引号) cmdLine.Remove(_T('"')); CString urlPrefix = _T("myapp://"); // 校验参数格式是否符合URL Scheme规则,不区分大小写匹配 if (cmdLine.GetLength() > urlPrefix.GetLength() && cmdLine.Left(urlPrefix.GetLength()).CompareNoCase(urlPrefix) == 0) { // 提取URL前缀后的动态值赋值给m_code m_code = cmdLine.Mid(urlPrefix.GetLength()); // 可选:如果动态值后有多余的路径/参数,可在此处增加截断逻辑,比如只取前面6位数字 // m_code = m_code.Left(6); } else { // 未获取到合法参数时使用默认值 m_code = _T("pippo"); }
验证说明
你修改代码编译后,直接在浏览器地址栏输入myapp://654321调用启动程序,即可看到m_code的值被替换为654321,无需修改注册表现有配置。
内容的提问来源于stack exchange,提问作者user3348353
相关产品推荐
相关产品推荐

