VC++實(shí)現(xiàn)添加文件關(guān)聯(lián)的方法示例
本文實(shí)例講述了VC++實(shí)現(xiàn)添加文件關(guān)聯(lián)的方法。分享給大家供大家參考,具體如下:
// 檢測(cè)文件關(guān)聯(lián)情況
// strExt: 要檢測(cè)的擴(kuò)展名(例如: ".txt")
// strAppKey: ExeName擴(kuò)展名在注冊(cè)表中的鍵值(例如: "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;
}
//---------------------------------------------------------------------------
// 注冊(cè)文件關(guān)聯(lián)
// strExe: 要檢測(cè)的擴(kuò)展名(例如: ".txt")
// strAppName: 要關(guān)聯(lián)的應(yīng)用程序名(例如: "C:\MyApp\MyApp.exe")
// strAppKey: ExeName擴(kuò)展名在注冊(cè)表中的鍵值(例如: "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: 在此添加控件通知處理程序代碼
//使用這兩個(gè)函數(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);
}
}
希望本文所述對(duì)大家VC++程序設(shè)計(jì)有所幫助。
- VC++實(shí)現(xiàn)文件與應(yīng)用程序關(guān)聯(lián)的方法(注冊(cè)表修改)
- C++寫(xiě)注冊(cè)表項(xiàng)實(shí)例
- C++訪問(wèn)注冊(cè)表獲取已安裝軟件信息列表示例代碼
- C++中事件機(jī)制的簡(jiǎn)潔實(shí)現(xiàn)及需要放棄的特性
- C++設(shè)置事件通知線程工作的方法
- 解決C++中事件不響應(yīng)的方法詳解
- C++事件處理中__event與__raise關(guān)鍵字的用法講解
- 深入解析C++程序中激發(fā)事件和COM中的事件處理
- C++事件處理中的__hook與__unhook用法詳解
- C++事件驅(qū)動(dòng)型銀行排隊(duì)模擬
相關(guān)文章
Qt實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
15種?C++?常見(jiàn)報(bào)錯(cuò)原因分析
這篇文章主要介紹了15種?C++?常見(jiàn)報(bào)錯(cuò),本文通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解
這篇文章主要為大家介紹了C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
C語(yǔ)言實(shí)現(xiàn)班級(jí)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)班級(jí)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
VScode + keil開(kāi)發(fā)環(huán)境搭建安裝使用過(guò)程
這篇文章主要介紹了VScode + keil開(kāi)發(fā)環(huán)境搭建及安裝使用過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
Visual Studio Community 2022(VS2022)安裝圖文方法
這篇文章主要介紹了Visual Studio Community 2022(VS2022)安裝方法,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12

