使用注册表关联文件默认打开程序并设置默认图标,

    网上VC操作注册表的文章很多,但是Qt的却相对较少,其实Qt操作也比较简单,但是不熟悉注册表的格式,可能会有点麻烦。
1
bool connectFileToProgram() 2 { 3 QSettings *ukenvFileReg = new QSettings("HKEY_CLASSES_ROOT\\.otp", QSettings::NativeFormat); 4 5 //判断UKEnv类型是否已在注册表中,并关联了正确的打开方式(程序打开方式),没有则写入 6 QString currentValue = ukenvFileReg->value("Default").toString(); 7 8 if (currentValue.isEmpty() || 9 currentValue != "OTPFile") 10 { 11 ukenvFileReg->setValue("Default", "OTPFile"); 12 13 QSettings *ukenvIconReg = new QSettings("HKEY_CLASSES_ROOT\\OTPFile\\DefaultIcon", QSettings::NativeFormat); 14 ukenvIconReg->setValue("Default", QString(qApp->argv()[0]) + ",0"); //把当前运行的程序资源中的第一个图标置入 15 delete ukenvIconReg; 16 17 QSettings *ukenvProgramReg = new QSettings("HKEY_CLASSES_ROOT\\OTPFile\\shell\\open\\command", QSettings::NativeFormat); 18 ukenvProgramReg->setValue("Default", "\""+QString(qApp->argv()[0])+"\"" + " \""+"%1"+"\""); //把当前运行的程序路径置入 19 delete ukenvProgramReg; 20 } 21 delete ukenvFileReg; 22 23 return true; 24 } 25 26 int main(int argc, char *argv[]) 27 { 28 QApplication a(argc, argv); 29 30 connectFileToProgram();//关联程序默认打开方式,并设置图标 31 32 QT_MAP w; 33 if(qApp->argv()[1] != NULL) 34 { 35 w.openFile(qApp->argv()[1]); 36 } 37 w.showMaximized(); 38 39 return a.exec(); 40 }
注:1.".otp"为自定义格式文件扩展名;2.OTPFile为otp文件的格式类型,名称可以随意。

 

posted @ 2013-12-23 17:51  Jimnny  阅读(1573)  评论(0)    收藏  举报