如何关联文件?(50分)

  • 主题发起人 主题发起人 gygg
  • 开始时间 开始时间
G

gygg

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己编写了一个mp3播放器,想关联机器里的所有MP3文件,但不用安装程序和自己手动关联,如何在应用程序中实现?请各位帮忙。
 
改注册表

Root 下的 mp3file
 
以下代码可以得到mp3的关联的文件,要改变的话,用reg.writestring就可以了。
我就不写了把。

procedure TForm1.Button2Click(Sender: TObject);
var
ExtName: String;
CommandPath,CommandName: string;
begin
ExecuteEdit.Text := '';
ReadReg.RootKey := HKEY_CLASSES_ROOT;
ExtName := .mp3; //取得扩展名
if ReadReg.OpenKey(ExtName,false) then //根据扩展名在HKEY_CLASSES_ROOT里查找
begin
CommandPath := ReaDReg.ReadString('');
ReadReg.CloseKey;
CommandPath := CommandPath+'/shell/open/command';
if ReadReg.OpenKey(CommandPath,false) then
begin
CommandName := ReadReg.ReadString('');
ReadReg.CloseKey;
ExecuteEdit.Text := CommandName;
end;
end
else
MessageDlg('未找到相关的扩展名信息!',mtWarning,[mbOk],0);
end;
 
//注册文件扩展名;
procedure RegAizbFile(EXEFile:String);
Var Reg:TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if Reg.OpenKey('',False) then
begin
if not Reg.KeyExists('.AZB') then
begin
Reg.OpenKey('.AZB',True);
Reg.WriteString('','Aizb_Paint_Box_File');
end;

if not Reg.KeyExists('.AIC') then
begin
Reg.OpenKey('.AIC',True);
Reg.WriteString('','Aizb_Paint_Box_IconFile');
end;

Reg.CloseKey;
if not Reg.KeyExists('Aizb_Paint_Box_File') then
begin
Reg.OpenKey('Aizb_Paint_Box_File',True);
Reg.WriteString('','Aizb图形文件');
end;

Reg.CloseKey;
if not Reg.KeyExists('Aizb_Paint_Box_IconFile') then
begin
Reg.OpenKey('Aizb_Paint_Box_IconFile',True);
Reg.WriteString('','Aizb图标文件');
end;

Reg.CloseKey;
if not Reg.KeyExists('Aizb_Paint_Box_File/DefaultIcon') then
begin
Reg.OpenKey('Aizb_Paint_Box_File/DefaultIcon',True);
Reg.WriteString('','"'+EXEFile+'",0');
end;

Reg.CloseKey;
if not Reg.KeyExists('Aizb_Paint_Box_IconFile/DefaultIcon') then
begin
Reg.OpenKey('Aizb_Paint_Box_IconFile/DefaultIcon',True);
Reg.WriteString('','"'+EXEFile+'",0');
end;

Reg.CloseKey;
if not Reg.KeyExists('Aizb_Paint_Box_File/Shell/Open/Command') then
begin
Reg.OpenKey('Aizb_Paint_Box_File/Shell/Open/Command',True);
Reg.WriteString('',EXEFile+' "%1"');
end;

Reg.CloseKey;
if not Reg.KeyExists('Aizb_Paint_Box_IconFile/Shell/Open/Command') then
begin
Reg.OpenKey('Aizb_Paint_Box_IconFile/Shell/Open/Command',True);
Reg.WriteString('',EXEFile+' "%1"');
end;
end;
finally
Reg.Free;
end;
end;
 
后退
顶部