uses Registry;function SetAssociatedExec(FileExt, Filetype, FileDescription, MIMEType, ExecName: string): Boolean; {修改成功,返回True,否则False}
var Reg: TRegistry;
begin
Result := False; {}
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 Reg.WriteString('Content Type', MIMEType);
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); {执行程序一般都有参数,例如WinZip的“winzip32.exe ″%1″”,″%1″参数指ZIP文件的文件名。因此ExecName应视情况加入参数}
Reg.CloseKey;
finally Reg.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
SetAssociatedExec('.abc', 'Project1', '', '',application.ExeName);
end;
var Reg: TRegistry;
begin
Result := False; {}
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 Reg.WriteString('Content Type', MIMEType);
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); {执行程序一般都有参数,例如WinZip的“winzip32.exe ″%1″”,″%1″参数指ZIP文件的文件名。因此ExecName应视情况加入参数}
Reg.CloseKey;
finally Reg.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
SetAssociatedExec('.abc', 'Project1', '', '',application.ExeName);
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货