首页 > 代码库 > 注册扩展名的默认执行程序
注册扩展名的默认执行程序
没啥可描述的.....就是一个注册扩展名的关联程序函数, 纯粹写注册表实现:
uses System.Win.Registry, Winapi.ShlObj;/// <summary>/// 注册文件类型及其默认执行程序/// </summary>/// <param name="AExt">/// 扩展名, 比如: .pas/// </param>/// <param name="AFileType">/// 文件类型, 比如: BDS.PasFile/// </param>/// <param name="ADescription">/// 类型描述, 比如: Delphi Source File/// </param>/// <param name="AExeName">/// 执行程序, 比如: "C:\Program Files\Embarcadero\RAD Studio\12.0\Bin\bds.exe"/// </param>/// <param name="AIcoIndex">/// 图标标号, 文件关联的图标, 编号为执行程序图标资源编号/// </param>/// <param name="ADoUpdate">/// 是否要求更新, 如果该值为True, 则每次注册时, 无论信息是否存在是否相同,/// 都通知Windows资源管理器更新, 如果该值为False, 则每次注册时,/// 只有执行程序不同时, 才会要求Windows资源管理器更新/// </param>procedure RegisterFileType(AExt, AFileType, ADescription, AExeName: string; AIcoIndex: Integer = 0; ADoUpdate: Boolean = False);var nStr: string; nNeedUpdate: Boolean;begin with TRegistry.Create do try RootKey := HKEY_CLASSES_ROOT; {自定义文件后缀} OpenKey(AExt, True); WriteString(‘‘, AFileType); CloseKey; {自定义的文件类型 格式:HKEY_CLASSES_ROOT\<Ext>\(Default) = <FileType>} OpenKey(AFileType, True); {文件类型的描述信息} WriteString(‘‘, ADescription); CloseKey; {自定义文件类型选择图标 格式: HKEY_CLASSES_ROOT\<FileType>\DefaultIcon\(Default) = ‘App Dir\App.exe,0‘} OpenKey(AFileType + ‘\DefaultIcon‘, True); WriteString(‘‘, AExeName + ‘,‘ + IntToStr(AIcoIndex)); CloseKey; {注册在资源管理器中打开文件的程序 格式:HKEY_CLASSES_ROOT\<FileType>\Shell\Open\Command\(Default) = ‘"App Dir\App.exe" "%1"‘} OpenKey(AFileType + ‘\Shell\Open‘, True); WriteString(‘‘, ‘&Open‘); CloseKey; nNeedUpdate := False; OpenKey(AFileType + ‘\Shell\Open\Command‘, True); nStr := ‘"‘ + AExeName + ‘" "%1"‘; {如果原来有默认程序, 则需要通知资源管理器更新} nNeedUpdate := not SameText(nStr, ReadString(‘‘)); if nNeedUpdate then WriteString(‘‘, nStr); CloseKey; {通知资源管理器注册文件类型关联,调用SHChangeNotify} if ADoUpdate or nNeedUpdate then SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); finally Free; end;end;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。