注册文件类型,设置文件图标

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

{-------------------------------------------------------------------------------

@过程名: slpert -> TFm_main.SetAssociatedExec

@作者: Gavin

@日期: 2004.09.08

@功能描述:

@参数: FileExt, Filetype, FileDescription, MIMEType, ExecName: string

@返回值: Boolean

-------------------------------------------------------------------------------}

Function TFm_main.SetAssociatedExec(FileExt, Filetype, FileDescription,

MIMEType, ExecName: String): Boolean; {修改成功,返回True,否则False}

Var

Reg: TRegistry;

ShFileInfo: TSHFILEINFO;

IconIndex: integer;

Begin

Result := False; {}

// ShGetFileInfo(Pchar(ExecName), 0, SHFileInfo,SizeOf(SHFileInfo), SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME or SHGFI_SMALLICON);

//IconIndex:=SHFileInfo.iIcon;

//showmessage(inttostr(iconIndex));

If (FileExt = '') Or (ExecName = '') Then

Exit; {如果文件类型为空或者没有定义执行程序就退出,FileExt必须带″.″,如.BMP}

Reg := TRegistry.Create;

Try

Reg.RootKey := HKey_Classes_Root;

If Not Reg.OpenKey(FileExt, True) Then

Exit; {当不能正确找到或创建FileExt键时退出,这种情况一般是注册表有错误,以下同}

Reg.WriteString('', FileType);

If MIMEType <> '' Then

Begin

Reg.WriteString('Content Type', MIMEType);

End;

Reg.CloseKey;

If Not Reg.OpenKey(FileType, True) Then

Exit;

Reg.WriteString('', FileDescription);

If Not Reg.OpenKey('shell\open\command', True) Then

Exit;

Reg.WriteString('', ExecName + ' "%1"');

{执行程序一般都有参数,例如WinZip的“winzip32.exe ″%1″”,″%1″参数指ZIP文件的文件名。因此ExecName应视情况加入参数}

Reg.CloseKey;

If Not Reg.OpenKey(FileType + '\DefaultIcon', True) Then

Exit;

Reg.WriteString('',ExecName+' ,1'); ///ExtractFilePath(

Reg.CloseKey;

Result := true;

Finally

Reg.Free;

End;

End;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航