HanDs
管理员

[Delphi文章] delphi编程设定文件关联 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Registry,ShlObj,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    StaticText5: TStaticText;
    CheckBox1: TCheckBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
procedure RegisterFileType(cMyExt,cMyFileType,cMyDescription,ExeName:string;
                          IcoIndex:integer;
                          DoUpdate:boolean=false);
var
  Reg: TRegistry;
begin
  Reg:=TRegistry.Create;
  try
    Reg.RootKey:=HKEY_CLASSES_ROOT;
    Reg.OpenKey(cMyExt, True);
    //写入自定义文件后缀
    Reg.WriteString('', cMyFileType);
    Reg.CloseKey;
    //写入自定义的文件类型
    //格式为:HKEY_CLASSES_ROOT\cMyExt\(Default) = 'cMyFileType'

    //下面为该文件类型创建关联
    Reg.OpenKey(cMyFileType, True);
    Reg.WriteString('', cMyDescription);
    //写入文件类型的描述信息
    Reg.CloseKey;

    // 下面为自定义文件类型选择图标
    // 加入键格式为 HKEY_CLASSES_ROOT\cMyFileType\DefaultIcon
    //  \(Default) = 'Application Dir\Project1.exe,0'
    Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
    Reg.WriteString('', ExeName + ',' + IntToStr(IcoIndex));
    Reg.CloseKey;

    // 下面注册在资源管理器中打开文件的程序
    Reg.OpenKey(cMyFileType + '\Shell\Open', True);
    Reg.WriteString('', '&Open');
    Reg.CloseKey;

    //  格式:HKEY_CLASSES_ROOT\Project1.FileType\Shell\Open\Command
    //  (Default) = '"Application Dir\Project1.exe" "%1"'
    Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
    Reg.WriteString('', '"' + ExeName + '" "%1"');
    Reg.CloseKey;

    //最后,让资源管理器实现我们加入的文件类型,只需调用SHChangeNotify即可
    if DoUpdate then SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
  finally
    Reg.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text:='.hell';
  Edit2.Text:='Project1.hell';
  Edit3.Text:='hellins''s file type';
  Edit4.Text:=Application.Exename;
  Edit5.Text:='0';
  checkbox1.checked:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterFileType(Edit1.text,Edit2.Text,Edit3.Text,Edit4.Text,strtoint(Edit5.Text), Checkbox1.Checked);
end;

end.

 


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
delphi 编程设定文件关联
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复