-
c语言入门之用程序实现文件的关联
文件关联在程序设计中有着重要的作用,它的目的是要实现某种扩展名的文件由相应的应用程序来打开,有许多的软件,特别试那些媒体播放软件,大都实现了文件的关联,可以想象,一个与文件相关的软件连文件关联就没有做到,它还如何混下去。另外,由于一般应用程序都有自己特定扩展名的数据文件,这也要求软件编制者应在程序中实现自动关联而不能由用户手工去实现。那如何实现文件的关联呢?实现文件关联的核心是对注册表的操作, 所有的文件关联都在HKEY—CLASSES— ROOT 下面, 要实现文件关联必须在HKEY—CLASSES—ROOT 中增加两个键值,一是和文件扩展名对应的类型说明,二是对这种类型文件的操作所需要执行的应用程序。下面范例可以说明如何实现文件的关联,本例的功能是将用户指定扩展名的文件与用户指定的应用程序相关联,双击此种类型的文件时就可以由相应的应用程序来打开。该范例程序是用Borland C++ Builder实现的,部分代码如下:
进行文件的关联:
void __fastcall TForm1::btnAssoClick(TObject *Sender)
{
TRegistry *Reg = new TRegistry;
Reg->RootKey=HKEY_CLASSES_ROOT;
try
{
Reg->OpenKey(extDoWith(edtExt->Text),true);
Reg->WriteString("",appDoWith(edtAppPath->Text));
Reg->CloseKey();
Reg->OpenKey(appDoWith(edtAppPath->Text)+"\\shell\\open\\command",true);
Reg->WriteString("",edtAppPath->Text);
Reg->CloseKey();
}
__finally
{
delete Reg;
}
}
以上代码实现了文件的关联,它用到了C++Builder提供Tregistry组件,它提供了许多用于操作注册表的方法,如:OpenKey打开注册表的某个键,WriteString往注册表了写值等,这就避免了去使用比较麻烦的RegCreateKey、RegSetValue等Win32API来完成同样的功能。 而extDoWith(),appDoWith()分别为自定义的函数它们的功能是设置关联文件的扩展名和取得应用程序的文件名,代码如下:
extDoWith()函数:
AnsiString __fastcall TForm1::extDoWith(AnsiString str)
{
//TODO: Add your source code here
//在扩展名前加上.符号
if (str.SubString(0,1)!=".")
{
str="."+str;
}
return str;
}
appDoWith()函数:
AnsiString __fastcall TForm1::appDoWith(AnsiString appPath)
{
//TODO: Add your source code here
//取得应用程序的文件名,不带扩展名
int length=appPath.Length();
int index=appPath.LastDelimiter("\\");
appPath=appPath.SubString(index+1,length-index+1);
index=appPath.LastDelimiter(".");
appPath=appPath.SubString(0,index-1);
return appPath;
}
这样就实现了文件类型与应用程序的关联,如果您对本程序感兴趣的话,可以到http://www.zccfamily.com/zqget/ 网址下载该程序的工程文件。如果你有与我交流的想法,我的联系方式:email:zqget@msn.com
进行文件的关联:
void __fastcall TForm1::btnAssoClick(TObject *Sender)
{
TRegistry *Reg = new TRegistry;
Reg->RootKey=HKEY_CLASSES_ROOT;
try
{
Reg->OpenKey(extDoWith(edtExt->Text),true);
Reg->WriteString("",appDoWith(edtAppPath->Text));
Reg->CloseKey();
Reg->OpenKey(appDoWith(edtAppPath->Text)+"\\shell\\open\\command",true);
Reg->WriteString("",edtAppPath->Text);
Reg->CloseKey();
}
__finally
{
delete Reg;
}
}
以上代码实现了文件的关联,它用到了C++Builder提供Tregistry组件,它提供了许多用于操作注册表的方法,如:OpenKey打开注册表的某个键,WriteString往注册表了写值等,这就避免了去使用比较麻烦的RegCreateKey、RegSetValue等Win32API来完成同样的功能。 而extDoWith(),appDoWith()分别为自定义的函数它们的功能是设置关联文件的扩展名和取得应用程序的文件名,代码如下:
extDoWith()函数:
AnsiString __fastcall TForm1::extDoWith(AnsiString str)
{
//TODO: Add your source code here
//在扩展名前加上.符号
if (str.SubString(0,1)!=".")
{
str="."+str;
}
return str;
}
appDoWith()函数:
AnsiString __fastcall TForm1::appDoWith(AnsiString appPath)
{
//TODO: Add your source code here
//取得应用程序的文件名,不带扩展名
int length=appPath.Length();
int index=appPath.LastDelimiter("\\");
appPath=appPath.SubString(index+1,length-index+1);
index=appPath.LastDelimiter(".");
appPath=appPath.SubString(0,index-1);
return appPath;
}
这样就实现了文件类型与应用程序的关联,如果您对本程序感兴趣的话,可以到http://www.zccfamily.com/zqget/ 网址下载该程序的工程文件。如果你有与我交流的想法,我的联系方式:email:zqget@msn.com
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式