Registriert seit: 15. Nov 2004
2.647 Beiträge
|
InstallExt installiert Dateierweiterung erst nach Neustart
11. Apr 2007, 09:43
Hi,
wieso installiert folgender Code eine Dateiendung nicht sofort, sondern erst nach einem Neustart ? Auch Strg+F5 im Explorer hat nichts gebracht.
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString, IconPfad: 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', [IconPfad, 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;
// wie es hiermit steht weiß ich gerade nicht, aber ich poste ihn mal mit
function UnInstallExt(Extension, ExtDescription: String): Boolean;
var Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
try
with Reg do
begin
RootKey := HKEY_CLASSES_ROOT;
DeleteKey(Extension);
DeleteKey('\' + ExtDescription);
Result := True;
end;
if Reg.OpenKey('DefaultIcon', True) then
begin
Reg.DeleteKey('DefaultIcon');
Result := True;
end;
except
Result := False;
end;
finally
Reg.Free;
end;
end;
Ein Aufrufbeispiel:
InstallExt('.asd', 'asd irgendetwas', 'asd irgendetwas', 'asd.exe', '"%1"', 'asd.ico' , 0);
|
|
Zitat
|