VC++实现添加文件关联的方法示例
本文实例讲述了VC++实现添加文件关联的方法。分享给大家供大家参考,具体如下:
//检测文件关联情况
//strExt:要检测的扩展名(例如:".txt")
//strAppKey:ExeName扩展名在注册表中的键值(例如:"txtfile")
//返回TRUE:表示已关联,FALSE:表示未关联
BOOLCheckFileRelation(constchar*strExt,constchar*strAppKey)
{
intnRet=FALSE;
HKEYhExtKey;
charszPath[_MAX_PATH];
DWORDdwSize=sizeof(szPath);
if(RegOpenKey(HKEY_CLASSES_ROOT,strExt,&hExtKey)==ERROR_SUCCESS)
{
RegQueryValueEx(hExtKey,NULL,NULL,NULL,(LPBYTE)szPath,&dwSize);
if(_stricmp(szPath,strAppKey)==0)
{
nRet=TRUE;
}
RegCloseKey(hExtKey);
returnnRet;
}
returnnRet;
}
//---------------------------------------------------------------------------
//注册文件关联
//strExe:要检测的扩展名(例如:".txt")
//strAppName:要关联的应用程序名(例如:"C:\MyApp\MyApp.exe")
//strAppKey:ExeName扩展名在注册表中的键值(例如:"txtfile")
//strDefaultIcon:扩展名为strAppName的图标文件(例如:"C:\MyApp\MyApp.exe,0")
//strDescribe:文件类型描述
voidRegisterFileRelation(char*strExt,char*strAppName,char*strAppKey,char*strDefaultIcon,char*strDescribe)
{
charstrTemp[_MAX_PATH];
HKEYhKey;
RegCreateKey(HKEY_CLASSES_ROOT,strExt,&hKey);
RegSetValue(hKey,"",REG_SZ,strAppKey,strlen(strAppKey)+1);
RegCloseKey(hKey);
RegCreateKey(HKEY_CLASSES_ROOT,strAppKey,&hKey);
RegSetValue(hKey,"",REG_SZ,strDescribe,strlen(strDescribe)+1);
RegCloseKey(hKey);
sprintf(strTemp,"%s\\DefaultIcon",strAppKey);
RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
RegSetValue(hKey,"",REG_SZ,strDefaultIcon,strlen(strDefaultIcon)+1);
RegCloseKey(hKey);
sprintf(strTemp,"%s\\Shell",strAppKey);
RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
RegSetValue(hKey,"",REG_SZ,"Open",strlen("Open")+1);
RegCloseKey(hKey);
sprintf(strTemp,"%s\\Shell\\Open\\Command",strAppKey);
RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
sprintf(strTemp,"%s\"%%1\"",strAppName);
RegSetValue(hKey,"",REG_SZ,strTemp,strlen(strTemp)+1);
RegCloseKey(hKey);
}
用法如下:
voidCguanlianDlg::OnBnClickedOk()
{
//TODO:在此添加控件通知处理程序代码
//使用这两个函数进行关联的示例代码
charstrExt[10]=".zwcTxt";
charstrAppKey[30]="Windows.zwcTxt.1.0";
BOOLrelationExists=CheckFileRelation(strExt,strAppKey);
if(!relationExists)
{
charstrAppName[MAX_PATH+1]="E:\\Desktop\\Temp\\GMTools.exe";
charstrDefaultIcon[MAX_PATH+1]="";
charstrDescribe[100]="WellTestInterpretationFiles";
RegisterFileRelation(strExt,strAppName,strAppKey,strDefaultIcon,strDescribe);
}
}
希望本文所述对大家VC++程序设计有所帮助。