VC++实现添加文件关联的方法示例

本文实例讲述了VC++实现添加文件关联的方法。分享给大家供大家参考,具体如下:

// 检测文件关联情况// strExt: 要检测的扩展名(例如: ".txt")// strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// 返回TRUE: 表示已关联,FALSE: 表示未关联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;}//---------------------------------------------------------------------------// 注册文件关联// strExe: 要检测的扩展名(例如: ".txt")// strAppName: 要关联的应用程序名(例如: "C:\MyApp\MyApp.exe")// strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// strDefaultIcon: 扩展名为strAppName的图标文件(例如: "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: 在此添加控件通知处理程序代码  //使用这两个函数进行关联的示例代码  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++程序设计有所帮助。

刺是与生俱来的,上帝在赐予优越感同时捆-绑的附属品;

VC++实现添加文件关联的方法示例

相关文章:

你感兴趣的文章:

标签云: