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

发布时间 - 2026-01-11 02:59:35    点击率:

本文实例讲述了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++  # 添加  # 文件关联  # VC++实现文件与应用程序关联的方法(注册表修改)  # C++写注册表项实例  # C++访问注册表获取已安装软件信息列表示例代码  # C++中事件机制的简洁实现及需要放弃的特性  # C++设置事件通知线程工作的方法  # 解决C++中事件不响应的方法详解  # C++事件处理中__event与__raise关键字的用法讲解  # 深入解析C++程序中激发事件和COM中的事件处理  # C++事件处理中的__hook与__unhook用法详解  # C++事件驱动型银行排队模拟  # 扩展名  # 注册表  # 键值  # 在此  # 这两个  # 给大家  # 所述  # 程序设计  # 应用程序  # 讲述了  # nRet  # int  # hExtKey  # HKEY  # CheckFileRelation  # BOOL  # char  # const  # szPath 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 装修招标网站设计制作流程,装修招标流程?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  微信公众帐号开发教程之图文消息全攻略  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  百度浏览器如何管理插件 百度浏览器插件管理方法  中国移动官方网站首页入口 中国移动官网网页登录  php 三元运算符实例详细介绍  ,怎么在广州志愿者网站注册?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何在云主机上快速搭建网站?  浅谈redis在项目中的应用  长沙企业网站制作哪家好,长沙水业集团官方网站?  详解CentOS6.5 安装 MySQL5.1.71的方法  如何在Windows服务器上快速搭建网站?  nginx修改上传文件大小限制的方法  MySQL查询结果复制到新表的方法(更新、插入)  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  高端网站建设与定制开发一站式解决方案 中企动力  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何在阿里云部署织梦网站?  网站制作免费,什么网站能看正片电影?  北京企业网站设计制作公司,北京铁路集团官方网站?  使用spring连接及操作mongodb3.0实例  免费网站制作appp,免费制作app哪个平台好?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  公司门户网站制作流程,华为官网怎么做?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Android GridView 滑动条设置一直显示状态(推荐)  如何快速配置高效服务器建站软件?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  EditPlus中的正则表达式 实战(1)  常州企业网站制作公司,全国继续教育网怎么登录?  Linux系统运维自动化项目教程_Ansible批量管理实战  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  三星网站视频制作教程下载,三星w23网页如何全屏?