Registriert seit: 15. Jul 2004
336 Beiträge
Delphi 7 Professional
|
Re: mp3's mit meinem Programm Verknüpfen-Problem
9. Apr 2005, 11:08
So, ich habe dir jetzt mal für deine Bedürfnisse eine Function geschrieben:
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription, ExecuteDescription,
OpenWith, ParamString: string; IconIndex: Integer = 0;
ExtVerb: string = 'Open'): Boolean;
var Reg:TRegistry;
begin
Result:=false;
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if Reg.OpenKey(Extension,true) then
begin
Reg.WriteString('',ExtDescription);
Reg.CloseKey;
if Reg.OpenKey(ExtDescription,true) then
begin
Reg.WriteString('',FileDescription);
if Reg.OpenKey('DefaultIcon',true) then
begin
{ -- OpenKey öffnet ohne vorangestelltes '\' den beschriebenen
Unterschlüssel, wenn vorhanden -- }
Reg.WriteString('',OpenWith+','+inttostr(IconIndex));
Reg.CloseKey;
if Reg.OpenKey(ExtDescription+'\Shell',true) then
begin
Reg.WriteString('',ExtVerb); // fett markieren
if Reg.OpenKey(ExtVerb,true) then
begin
Reg.WriteString('',ExecuteDescription); // z.B. "Open with MyProgramm"
if Reg.OpenKey('Command',true) then
begin
Reg.WriteString('','"'+OpenWith+'" '+ParamString);
Reg.CloseKey;
Result:=true;
end;
end;
end;
end;
end;
end;
finally
Reg.Free;
end;
{ -- Icon für die neue Dateiendung setzen/aktualisieren -- }
{ -- benötigt die uses ShlObj -- }
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if InstallExt('.ttt','ttt-datei','my own ext','Play with MyProgramm',
Application.ExeName,'"%1"',0,'Play') then
begin
showmessage('successful!');
end else showmessage('failure!');
end;
=> ExtDescription darf meiner Meinung nach keine Leerzeichen enthalten
=> ExecuteDescription kannste so schreiben, wie du willst ;-)
Am besten nutzt du auch wirklich den Vorteil des Rückgabewertes (if [...] then), um zukünftige Fehler schneller zu entdecken.
|
|
Zitat
|