在程序中实现关联指定的文件类型
来源:互联网 发布:小学生读英语软件下载 编辑:程序博客网 时间:2024/05/18 13:06
在日常使用电脑的过程中,我们只要双击文件夹中各种形象化的文件图标就可以直接启动相关联的软件来打开该文件(如Word文档),而不需要用户关心该用什么软件来打开此类文件。这样做不但方便了用户,同时也增加了软件的主动性及灵活性。
软件的这种功能是如何实现的呢?接下来我就为大家介绍如何在Windows环境下为自己开发的软件增加这样的功能。“玩”过Windows注册表的朋友应该都会发现在注册表的HKEY_CLASSES_ROOT主键中有很多以“.”开头的子项(如.txt),而这些子项就是最关键的开始。下面我就以文本文件(*.txt)为例来进行说明。
打开菜单“开始->运行...”,输入“regedit”来启动注册表编辑器。然后打开HKEY_CLASSES_ROOT主键找到“.txt”子项,点击后就可以在右边查看该项的有内容。在这里我们主要关心的是“(默认)”这一项,因为它的内容就是我们要找的下一个主键项。一般情况下该键值为“txtfile”,接下来继续在HKEY_CLASSES_ROOT主键中找到“txtfile”子项,双击打开该项后会出现多个子项,下面说明主要的子项的用途:
有了这些信息后,只要我们在软件中修改或建立这些相关的注册表项及键值就可以实现检测、修改(新增)各种文件类型的关联了。
下面是我编写的两个函数:
bool CheckFileRelation(AnsiString, AnsiString)
void ReGISterFileRelation(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString)
分别用于实现检测和修改(新增)文件关联的功能,源代码如下:
软件的这种功能是如何实现的呢?接下来我就为大家介绍如何在Windows环境下为自己开发的软件增加这样的功能。“玩”过Windows注册表的朋友应该都会发现在注册表的HKEY_CLASSES_ROOT主键中有很多以“.”开头的子项(如.txt),而这些子项就是最关键的开始。下面我就以文本文件(*.txt)为例来进行说明。
打开菜单“开始->运行...”,输入“regedit”来启动注册表编辑器。然后打开HKEY_CLASSES_ROOT主键找到“.txt”子项,点击后就可以在右边查看该项的有内容。在这里我们主要关心的是“(默认)”这一项,因为它的内容就是我们要找的下一个主键项。一般情况下该键值为“txtfile”,接下来继续在HKEY_CLASSES_ROOT主键中找到“txtfile”子项,双击打开该项后会出现多个子项,下面说明主要的子项的用途:
txtfile- DefaultIcon(显示的文件图标)- shell- Open- Command(用于打开该类型文件的程序路径)- Print- Command(用于打印该类型文件的程序路径) |
有了这些信息后,只要我们在软件中修改或建立这些相关的注册表项及键值就可以实现检测、修改(新增)各种文件类型的关联了。
下面是我编写的两个函数:
bool CheckFileRelation(AnsiString, AnsiString)
void ReGISterFileRelation(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString)
分别用于实现检测和修改(新增)文件关联的功能,源代码如下:
//---------------------------------------------------------------------------// 检测文件关联情况// ExeName: 要检测的扩展名(例如: ".txt")// AppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// 返回true: 表示已关联,false: 表示未关联bool __fastcall CheckFileRelation(AnsiString ExtName, AnsiString AppKey){TRegistry *pReg = new TRegistry();pReg->RootKey = HKEY_CLASSES_ROOT; // 打开主键// 在检测到本程序不是默认的文件关联时,请用户确认该重新关联操作pReg->OpenKey(ExtName, true);if (pReg->ReadString("") != AppKey){pReg->CloseKey();return false;}pReg->CloseKey();return true;}//---------------------------------------------------------------------------// 注册文件关联// ExeName: 要检测的扩展名(例如: ".txt")// AppName: 要关联的应用程序名(例如: "C:/MyApp/MyApp.exe")// AppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// Icon: 扩展名为ExeName的图标文件(例如: "C:/MyApp/MyApp.exe, 1")// Describe: 文件类型描述void __fastcall RegisterFileRelation(AnsiString ExtName, AnsiString AppName,AnsiString AppKey, AnsiString Icon, AnsiString Describe){try{TRegistry *pReg = new TRegistry();pReg->RootKey = HKEY_CLASSES_ROOT; // 打开主键// 新建/打开以文件扩展名为名的项,并写入数据pReg->OpenKey(ExtName, true);pReg->WriteString("", AppKey);pReg->CloseKey();pReg->OpenKey(AppKey, true);pReg->WriteString("", Describe);pReg->CloseKey();pReg->OpenKey(AppKey + "//DefaultIcon", true);pReg->WriteString("", Icon);pReg->CloseKey();pReg->OpenKey(AppKey + "//Shell", true);pReg->WriteString("", "Open");pReg->CloseKey();pReg->OpenKey(AppKey + "//Shell//Open//Command", true);pReg->WriteString("", AppName + " %1");pReg->CloseKey();delete pReg;}catch(...){MessageBox(NULL, "注册文件关联时发生错误", "注意", MB_OK|MB_ICONWARNING);}} |
- 在程序中实现关联指定的文件类型
- 如何在程序中实现关联指定的文件类型
- grep 命令(在指定文件的文件类型中查找)
- 给自己的程序建立文件类型关联
- 在当前目录中所有文件中,查找,存在指定内容的指定文件类型
- 用 find 命令在指定文件类型中查找包含指定文字的文件
- 在Windows 7中彻底移除某文件类型的文件关联信息
- 取消文件类型的关联
- 注册表的文件类型关联
- Android菜鸟笔记-关联APK程序打开的文件类型:MimeType
- 文件类型关联 单例模式 用特定程序打开指定素材
- Linux-在指定文件类型中递归查找到目标字符串
- 在进程中找指定的程序
- Qt 如何实现文件类型关联
- [Eclipse]将eclipse的非默认文件类型关联至指定编辑器
- 文件类型关联的文件图标
- 注册表的文件类型关联[转]
- 操作注册表进行文件类型与程序关联
- GridView中的数据导出到Excel方法(包含处理模板列)
- Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第4版)
- BW十日谈之增强数据源
- HeadFirst设计模式入门(四)
- Struts1.2中actionForm使用索引:ArrayList改用HashMap,避免错乱顺序
- 在程序中实现关联指定的文件类型
- 在客戶端設置控件的顯示/隱藏
- 字符,字节和编码(乱码的产生)
- js访问
- 使用 Nginx 提升网站访问速度
- 图片处理(图片缩小,图片剪辑)
- 用open和showModalDialog打開新網頁的區別
- 在框架窗口中退出
- DES解密时“Base-64字符数组的无效长度”