想要双击某种文件可以打开对应的exe
需要向系统注册表进行注册关联
下面的代码是.data与.raw与该exe进行关联,通过注册表进行关联
// 通过注册表实现.data与.raw关联应用程序Phaseye
QString strAppPath = QApplication::applicationFilePath();
/* 一定要将此路径转换为"\\"形式,因为qt默认识别的是"/",windows并不识别 */
strAppPath = strAppPath.split("/").join("\\");
QString strClassName("test");
QString strExtDescri("test data");
QString strDataExt(".data");
NdtOsUtil::getInstance()->registerFileType(strClassName, strAppPath, strDataExt,
strExtDescri);
QString strRawExt(".raw");
NdtOsUtil::getInstance()->registerFileType(strClassName, strAppPath, strRawExt,
strExtDescri);
.data与.raw关联的具体实现方法
void registerFileType(const QString &strClassName, const QString &strAppPath,
const QString &strExt, const QString &strExtDescri)
{
QString strBaseUrl("HKEY_CURRENT_USER\\Software\\Classes");
QSettings setting(strBaseUrl, QSettings::NativeFormat);
setting.setValue("/" + strClassName + "/Shell/Open/Command/.", "\"" + strAppPath + "\" \"%1\"");
setting.setValue("/" + strClassName + "/.", strExtDescri);
setting.setValue("/" + strClassName + "/DefaultIcon/.", strAppPath + ",0");
// 关联 ext 和 类别
setting.setValue("/" + strExt + "/OpenWithProgIds/" + strClassName, "");
// 立即保存该修改
setting.sync();
}
直接复制与粘贴就能使用