Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
 
Delphi 12 Athens
 
#6

AW: Dateiendung registrieren - Problem

  Alt 25. Mär 2015, 20:06
Ich hab das mal im Editor umgeschrieben, das ist zwar nicht sonderlich elegant, aber versuch doch mal
Delphi-Quellcode:
type
  ERegException = class(Exception);

procedure InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer;
  ExtVerb: string = 'open');
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey(Extension, True) then
      try
        Reg.WriteString('', ExtDescription);
      finally
        Reg.CloseKey;
      end
    else
      raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [ExtDescription]);
    if Reg.OpenKey(ExtDescription, True) then
      try
        Reg.WriteString('', FileDescription);
        if Reg.OpenKey('DefaultIcon', True) then
          try
            Reg.WriteString('', OpenWith + ',' + IntToStr(IconIndex));
          finally
            Reg.CloseKey;
          end
        else
          raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [FileDescription + '\DefaultIcon']);
        if Reg.OpenKey('Shell\' + ExtVerb + '\Command', True) then
          try
            Reg.WriteString('', '"' + OpenWith + '" "' + ParamString + '"');
          finally
          end
        else
          raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [ExtDescription + '\Shell\' + ExtVerb + '\Command']);
      finally
        Reg.CloseKey;
      end
    else
      raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [FileDescription]);
  finally
    Reg.Free;
  end;
end;
Ist zwar ungetestet, sollte aber zumindest den Grund nennen, wieso es nicht klappt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat