Einzelnen Beitrag anzeigen

Benutzerbild von TwoFace
TwoFace

Registriert seit: 21. Jun 2003
Ort: Uffenheim
26 Beiträge
 
#3

Re: [Registry] Windows Explorer Kontextmenü: Für alle Dateie

  Alt 2. Jan 2007, 20:42
Servus und frohes neues Jahr.

Hab das auch schon mal vor langer Zeit gemacht. Hier die Funktion um ne Erweiterung zu registrieren:
Delphi-Quellcode:
// app muss den kompletten Dateipfad + Dateiname des Programms beinhalten
// fileext soll die Erweiterung sein (ohne Punkt)
// caption ist der Text der angezeigt werden soll
function RegConMenu(app, fileext, caption: String): Boolean;
var
  reg: TRegistry;
begin
  result := false;

  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    // Zum Schlüssel des angegebenen Dateitypen springen,
    // falls nicht vorhanden wird dieser erstellt
    if reg.OpenKey('.' + fileext + '\Shell\' + caption + '\command', true) then
    begin
      //Anwendung eintragen, %1 übergibt den Dateinamen
      reg.WriteString('', '"' + app + '" -mount 0,"%1"');
      reg.CloseKey;
      result := true;
    end;
  finally
    FreeAndNil(reg);
  end;
end;
Und hier die zum löschen:
Delphi-Quellcode:
// fileext ist die Erweiterung (ohne Punkt)
// caption ist der Text des Menüpunkts
// wird delfiletype mit true beantwortet wird die gesamte Dateierweiterung aus der
// registry gelöscht, mit false nur der Kontextmenüeintrag
function DelConMenu(fileext, caption: String; delfiletype: Boolean): Boolean;
var
  reg: TRegistry;
begin
  result := false;

  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    if delfiletype then
    begin
      //Schlüssel löschen
      if reg.KeyExists('.' + fileext) then
        reg.DeleteKey('.' + fileext);
    end else
    begin
      //Zum Schlüssel des angegebenen Dateitypen springen
      if reg.OpenKey('.' + fileext + '\Shell\', false) then
      begin
        //Schlüssel löschen
        reg.DeleteKey(caption);
        reg.CloseKey;
        result := true;
      end;
    end;
  finally
    FreeAndNil(reg);
  end;
end;
Im Anhang befindet sich ein Screeny vom Schlüssel. Wie Mr_G richtig gesagt hat, für alle Dateien ist der Schlüssel "*".

PS: Für Schäden an der Registry übernehme ich keine Haftung.
Miniaturansicht angehängter Grafiken
regist_113.jpg  
  Mit Zitat antworten Zitat