用Delphi实现文件关联

2016-08-22 10:16:36来源:http://zsqztg.blog.51cto.com/601880/191044作者:zhangshengqi人点击


文件关联为我们带来很多的方便。Delphi自带有注册表对象TRegistry,可以通过它取得或改变注册表相关键值的内容。FunctionGetAssociatedExec(FileExt:String;varFileDescription,MIMEType:String):String;VarReg:TRegistry;FileType:String;beginResult:='';{函数返回值是打开FileExt文件的可执行程序的名字及其参数}Reg:=TRegistry.Create;{创建注册表对象的实例}tryReg.RootKey:=HKey-Classes-Root;{准备操作的注册表根键}ifnotReg.OpenKey(FileExt,False)thenExit;{贝氲奈募嘈驮谧⒉岜碇?br> 不存在时退出,False表示FileExt键值不存在时不自动创建新键}FileType:=Reg.ReadString('');{文件类型的简单描述}MIMEType:=Reg.ReadString('Content Type');{内容MIME类型}Reg.CloseKey;{关闭当前关键字}if(FileType='')or(notReg.OpenKey(FileType,False))thenExit;FileDescription:=Reg.ReadString('');{内容类型的具体描述}ifnotReg.OpenKey('shell/open/command',False)thenExit;{眉当4嬗?br> 哪个程序、以什么参数打开FileExt类型的文件}Result:=Reg.ReadString('');{读取该键值内容}Reg.CloseKey;finallyReg.Free;{释放对象实例}end;end;由上面的例程可知,首先在HKey-Classes-Root寻找与FileExt(文件后缀,带“.”)相匹配的主键,然后从“默认”键名取得键值,然后以该键值作为主键取得FileExt的具体描述。在其子键shell/open/command中保存了由哪个程序、以什么参数打开FileExt类型的文件的信息,只要修改它的内容,就可以控制由哪个程序打开FileExt类型的文件。既然知道了文件关联在注册表中是如何定义的,只要反其道而行,就可以正确改变文件的关联了。functionSetAssociatedExec(FileExt,Filetype,FileDescription,MIMEType,ExecName:String):Boolean;{修改成功,返回True,否则False}varReg:TRegistry;beginResult:=False;{}if(FileExt='')or(ExecName='')thenExit;{绻募嘈臀栈蛘呙挥?br> 定义执行程序就退出,FileExt必须带".",如.BMP}Reg:=TRegistry.Create;tryReg.RootKey:=HKey-Classes-Root;ifnotReg.OpenKey(FileExt,True)thenExit;{辈荒苷氛业交虼唇‵ileExt键时退出,这种情况一般是注册表有错误,以下同}Reg.WriteString('',FileType);ifMIMEType<>''thenReg.WriteString('Content Type',MIMEType);Reg.CloseKey;ifnotReg.OpenKey(FileType,True)thenExit;Reg.WriteString('',FileDescription);ifnotReg.OpenKey('shell/open/command',True)thenExit;Reg.WriteString('',ExecName);{葱谐绦蛞话愣加胁问?例如WinZip的“winzip32.exe "%1"”,"%1"参数指ZIP文件的文件名。因此ExecName应视情况加入参数}Reg.CloseKey;finallyReg.Free;end;end;写与读是一个性质相同、方向相反的过程,因此在SetAssociatedExec函数没有过多的说明,可以参考GetAssociatedExec函数。至于TRegistry的使用,限于篇幅,本文从略。摘自《赛迪网》郑育洲文

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台