AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Registry] Windows Explorer Kontextmenü: Für alle Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

[Registry] Windows Explorer Kontextmenü: Für alle Dateien

Ein Thema von Dunedain · begonnen am 2. Jan 2007 · letzter Beitrag vom 3. Jan 2007
 
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, 19: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.
Angehängte Grafiken
Dateityp: jpg regist_113.jpg (24,4 KB, 35x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz