![]() |
Prüfen der registrierten Dateitypen
Hallo zusammen,
ach Stundenlanger Suche im Internet muss ich doch mal die Frage hier stellen, vieleicht gibts das schon irgendwo erklärt aber ich habs einfach nicht gefunden. Und zwar gibt es viele verschiedene Dateiendungen die ich mit meinem Programm verknüpfen möchte oder eben die Verknüpfung löschen möchte. Dazu muss ich aber erstmal Prüfen ob mein Programm in der Registry überhaupt drin ist. Dazu hab ich folgende Funktion geschrieben
Delphi-Quellcode:
Der Code erkennt aber nur das die Endung registriert ist, nicht aber ob mein Programm als Hauptverknüpfung drin steht.
function CheckExt(Extension: String): Boolean;
var Reg: TRegistry; Description: String; begin Result := False; if Extension <> '' then begin if Extension[1] <> '.' then Extension := '.' + Extension; Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.KeyExists(Extension) then begin Reg.OpenKey(Extension, false); Description:=Reg.ReadString(''); if (Reg.OpenKey('\' + 'Planmarker', True))//Mein Programmname and (Reg.OpenKey('DefaultIcon', True)) and (Reg.KeyExists('\'+Description)) then Result:=true else result:=false; Reg.CloseKey; end; finally Reg.Free; end; end; end; Und ich steh da irgendwie aufn Schlauch... Gruß Matthias |
Re: Prüfen der registrierten Dateitypen
Was gibt denn FindExecutable zurück?
|
Re: Prüfen der registrierten Dateitypen
Bei der Dateiendung ist vermerkt welcher Schlüssel die Actionen dazu beherbergt. Also musst du dann den Schlüssel öffnen und schauen ob dort deine Anwendung eingetragen ist (du müsstest ja am besten wissen wo du was eingetragen hast)
|
Re: Prüfen der registrierten Dateitypen
|
Re: Prüfen der registrierten Dateitypen
das hab ich erstmal per Hand im Explorer eingetragen.(zum testen)
Ich möchte ja erstmal prüfen ob Dateiendung .bmp , .pcx etc schon für mein Programm eingetragen ist und dann die möglichkeit geben diese Verknüpfung zu entfernen oder hinzuzufügen. Ich dachte das Prüfen ist erstmal einfacher wie schreiben oder löschen, aber irgendwie häng ich da ich dachte eben das der Eintrag dann in
Delphi-Quellcode:
geprüft werden könnte
Reg.KeyExists('\'+Description+ '\Shell\Open\Command')
bekomm da aber kein gutes Ergebnis. wieso FindExecutable Ich will ja nicht die dazugehörige Anwendung starten ? Dachte das wird in zusammenhang ,it Shellexecute verwendet @Kaktus Ich suchte nicht die Funktion zum schreiben und löschen, darauf bin ich auch schon gestoßen, ich möchte ja erstmal prüfen. Die prüfung in deleteext hab ich ausprobiert, da bekomm ich genau wie bei meinem gebastel immer ein positives Ergebnis wenn die Erweiterung in der Registry existiert Gruß Matthias |
Re: Prüfen der registrierten Dateitypen
Zitat:
|
Re: Prüfen der registrierten Dateitypen
Habs rausgefunden
Danke für die Tipps Mein Neuer Code:
Delphi-Quellcode:
Gruß Matthias
function CheckExt(Extension: String): Boolean;
var Reg: TRegistry; Description,entrystring: String; begin Result := False; if Extension <> '' then begin if Extension[1] <> '.' then Extension := '.' + Extension; Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.KeyExists(Extension) then begin Reg.OpenKey(Extension, false); Description:=Reg.ReadString(''); Reg.Openkey('\'+Description+ '\Shell\Open\Command',false); Entrystring:=Reg.ReadString(''); if entrystring=Format('"%s" "%s"', [paramstr(0), '%1']) then Result:=true else result:=false; Reg.CloseKey; end; finally Reg.Free; end; end; end; |
Re: Prüfen der registrierten Dateitypen
Moin Matthias,
zwei Sachen noch, die mir aufgefallen sind: Das
Delphi-Quellcode:
kannst Du auch so
if entrystring=Format('"%s" "%s"', [paramstr(0), '%1'])
then Result:=true else result:=false;
Delphi-Quellcode:
schreiben.
Result := entrystring=Format('"%s" "%s"', [paramstr(0), '%1']);
Ausserdem gehört zu jedem erfolgreichen Reg.OpenKey auch ein Reg.CloseKey, da Du Dir ansonsten ein Resourcenleck einhandelst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz