Hallo *,
ich habe eine Funktion (ich glaube von den Schweizern) verwendet, um meinen Dateityp mit meinem Programm zu verknüpfen. Funzt alles prima, die Datei wird in meinem Programm geladen.
Ein Problem besteht allerdings, wenn der Dateiname Leerzeichen enthält. Ich habe extra Anführungszeichen bei der Registrierung angegeben, aber diese werden nicht berücksichtigt, sodass jedes neue Wort ein neuer Parameter ist.
Hier mal die Funktion und der Aufruf:
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean;
var
Reg: TRegistry;
begin
Result := False;
if Extension <> '' then
begin
if Extension[1] <> '.' then
Extension := '.' + Extension;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
if Reg.OpenKey(Extension, True) then
begin
Reg.WriteString('', ExtDescription);
if Reg.OpenKey('\' + ExtDescription, True) then
begin
Reg.WriteString('', FileDescription);
if Reg.OpenKey('DefaultIcon', True) then
begin
Reg.WriteString('', Format('%s,%d', [OpenWith, IconIndex]));
if Reg.OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then
begin
Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString]));
Result:=True;
end;
end;
end;
end;
finally
Reg.Free;
end;
end;
end;
InstallExt('.abc', 'Meine-Datei', 'Datei importieren', ParamStr(0), '"%1"', 0);
Was habe ich nun falsch gemacht? Ich komme einfach nicht drauf.
Vielen Dank