![]() |
Kontextmenü einer Datei ergänzen
Hi,
ich habe hier 2 kleine Funktionen gebastelt die es ermöglichen einen Kontextmenüeintrag eines beliebigen Dateityps für dein Programm zu erstellen oder wieder zu löschen. Unit "Registry" einbinden
Delphi-Quellcode:
Matze hat die Codes noch ein wenig erweitert und korrigiert:
//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:=True; try reg:=TRegistry.Create; reg.RootKey:=HKEY_CLASSES_ROOT; //Zum Schlüssel des angegebenen Dateitypen springen, falls nicht vorhanden wird dieser erstellt reg.OpenKey('.'+fileext+'\Shell\'+caption+'\command',true); //Anwendung eintragen, %1 übergibt den Dateinamen reg.WriteString('','"'+app+'" %1'); reg.CloseKey; except Result:=False; end; reg.free; end; //fileext ist die Erweiterung (ohne Punkt), caption ist der Text des Menüpunkts, wird delfiletype mit true beantwortet wird die gesamte Dateierweiterung aus der registrzy gelöscht, mit false nur der Kontextmenüeintrag function DelConMenu(fileext, caption : String; delfiletype : Boolean):Boolean; var reg: TRegistry; begin result:=true; try reg:=TRegistry.Create; reg.RootKey:=HKEY_CLASSES_ROOT; if delfiletype then begin //Schlüssel löschen reg.DeleteKey('.'+fileext); end else begin //Zum Schlüssel des angegebenen Dateitypen springen reg.OpenKey('.'+fileext+'\Shell\',false); //Schlüssel löschen reg.DeleteKey(caption); end; reg.CloseKey; except Result:=False; end; reg.free; end;
Delphi-Quellcode:
Und noch 2 Beispiel aufrufe:
// 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 + '" %1'); reg.CloseKey; result := true; end; finally FreeAndNil(reg); end; end; // 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; Erstellen eines Eintrages:
Delphi-Quellcode:
Löschen eines Eintrages:
procedure TForm1.Button1Click(Sender: TObject);
begin if RegConMenu('C:\Programme\blubb.exe','xform','Öffnen mit blubb') then begin ShowMessage('Der Kontextmenüeintrag wurde erfolgreich erstellt!'); end else begin ShowMessage('Der Kontextmenüeintrag konnte nicht erstellt werden! Evtl. fehlen Ihnen die nötigen Benutzerrechte!'); end; end;
Delphi-Quellcode:
Hier noch eine etwas ausführlichere Beschreibung + Screenshots:
procedure TForm1.Button2Click(Sender: TObject);
begin if DelConMenu('xform','Öffnen mit blubb', true) then begin ShowMessage('Der Kontextmenüeintrag wurde erfolgreich entfernt!'); end else begin ShowMessage('Der Kontextmenüeintrag konnte nicht entfernt werden! Evtl. fehlen Ihnen die nötigen Benutzerrechte!'); end; end; ![]() [edit=Chakotay1308]Beitrag erweitert und Code angepasst. Mfg, Chakotay1308[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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