VC++實現(xiàn)添加文件關(guān)聯(lián)的方法示例
更新時間:2017年08月28日 11:22:14 作者:zwcwu31
這篇文章主要介紹了VC++實現(xiàn)添加文件關(guān)聯(lián)的方法,涉及VC++針對注冊表的寫入與VC事件響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下
本文實例講述了VC++實現(xiàn)添加文件關(guān)聯(lián)的方法。分享給大家供大家參考,具體如下:
// 檢測文件關(guān)聯(lián)情況
// strExt: 要檢測的擴(kuò)展名(例如: ".txt")
// strAppKey: ExeName擴(kuò)展名在注冊表中的鍵值(例如: "txtfile")
// 返回TRUE: 表示已關(guān)聯(lián),F(xiàn)ALSE: 表示未關(guān)聯(lián)
BOOL CheckFileRelation(const char *strExt, const char *strAppKey)
{
int nRet=FALSE;
HKEY hExtKey;
char szPath[_MAX_PATH];
DWORD dwSize=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);
return nRet;
}
return nRet;
}
//---------------------------------------------------------------------------
// 注冊文件關(guān)聯(lián)
// strExe: 要檢測的擴(kuò)展名(例如: ".txt")
// strAppName: 要關(guān)聯(lián)的應(yīng)用程序名(例如: "C:\MyApp\MyApp.exe")
// strAppKey: ExeName擴(kuò)展名在注冊表中的鍵值(例如: "txtfile")
// strDefaultIcon: 擴(kuò)展名為strAppName的圖標(biāo)文件(例如: "C:\MyApp\MyApp.exe,0")
// strDescribe: 文件類型描述
void RegisterFileRelation(char *strExt, char *strAppName, char *strAppKey, char *strDefaultIcon, char *strDescribe)
{
char strTemp[_MAX_PATH];
HKEY hKey;
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);
}
用法如下:
void CguanlianDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知處理程序代碼
//使用這兩個函數(shù)進(jìn)行關(guān)聯(lián)的示例代碼
char strExt[10] = ".zwcTxt";
char strAppKey[30] = "Windows.zwcTxt.1.0";
BOOL relationExists = CheckFileRelation(strExt, strAppKey);
if(!relationExists)
{
char strAppName[MAX_PATH + 1] = "E:\\Desktop\\Temp\\GMTools.exe";
char strDefaultIcon[MAX_PATH + 1] = "";
char strDescribe[100] = "WellTest Interpretation Files";
RegisterFileRelation(strExt, strAppName, strAppKey, strDefaultIcon, strDescribe);
}
}
希望本文所述對大家VC++程序設(shè)計有所幫助。
相關(guān)文章
C++實現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解
這篇文章主要為大家介紹了C++實現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
C語言實現(xiàn)班級學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)班級學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
VScode + keil開發(fā)環(huán)境搭建安裝使用過程
這篇文章主要介紹了VScode + keil開發(fā)環(huán)境搭建及安裝使用過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07
Visual Studio Community 2022(VS2022)安裝圖文方法
這篇文章主要介紹了Visual Studio Community 2022(VS2022)安裝方法,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09

