码迷,mamicode.com
首页 > 其他好文 > 详细

注册扩展名的默认执行程序

时间:2014-08-22 12:35:16      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   os   io   文件   ar   

没啥可描述的.....就是一个注册扩展名的关联程序函数, 纯粹写注册表实现:

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;

 

注册扩展名的默认执行程序,布布扣,bubuko.com

注册扩展名的默认执行程序

标签:des   style   blog   color   os   io   文件   ar   

原文地址:http://www.cnblogs.com/hs-kill/p/3929012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!