Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.114 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 12:07
Moin Florian,

grundsätzlich müsste es funktionieren, allerdings sollte OpenWith auch im Key DefaultIcon in " eingeschlossen werden.
Sollten mehr solche Konstruktionen in Deinem Programm auftauchen, wird das System über kurz oder lang eine "Out of Resource" Meldung von sich geben, da die geöffneten Keys nicht wieder geschlossen werden.
Das Objekt wird, im Falle einer Exception auch nicht freigegeben.

Man sollte bei bestehender Verknüpfung noch die Einstellungen für die alte sichern, und im Fehlerfalle restaurieren.
Da zu einer Dateitypverknüpfung auch noch mehr gehört als DefaultIcon und Shell\Open\Command, kann es auch nicht schaden dann einen bestehenden Key erst einmal zu löschen, bevor man die neuen Werte einträgt (wie gesagt, sichern nicht vergessen).

Ich hab's mal grob überarbeitet.

Delphi-Quellcode:
begin
  Result := false;
  Reg := TRegistry.Create;
  try
    with Reg do begin
      RootKey := HKEY_CLASSES_ROOT;
      if not OpenKey(Extension, True) then exit;
      try
        WriteString('', ExtDescription);
      finally
        CloseKey;
      end;
      if not OpenKey('\' + ExtDescription, True) then exit;
      try
        WriteString('', FileDescription);
      finally
        CloseKey;
      end;
      if not OpenKey('DefaultIcon', True) then exit;
      try
        WriteString('', '"'+OpenWith + '",'+IntToStr(IconIndex));
      finally
        CloseKey;
      end;
      if not OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then exit;
      try
        WriteString('', '"' + OpenWith + '" "' + ParamString + '"');
      finally
        CloseKey;
      end;
    end;
  finally
    FreeAndNil(Reg);
  end;
  Result := true;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat