![]() |
Dateiendung registrieren - Problem
Eigentlich habe ich das schon oft gemacht, nur komischerweise funktioniert jetzt etwas nicht mehr.
Die Dateiendung wird korrekt registriert, aber wenn ich eine Datei mit Endung "XYZ" schließlich doppelklicke, wird kein Parameter übergeben (%1). ParamCount ist immer 1 und nicht, wie erwünscht, 2. Ich nutze folgenden Code von Meflin.
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer;
ExtVerb: string = 'Open'): Boolean; var Reg: TRegistry; begin Reg := TRegistry.Create; try with Reg do begin RootKey := HKEY_CLASSES_ROOT; OpenKey(Extension, True); WriteString('', ExtDescription); OpenKey('\' + ExtDescription, True); WriteString('', FileDescription); OpenKey('DefaultIcon', True); WriteString('', OpenWith + ',' + IntToStr(IconIndex)); OpenKey('\' + ExtDescription + '\Shell\' + ExtVerb + '\Command', True); WriteString('', '"' + OpenWith + '" "' + ParamString + '"'); end; Result := True; except Result := False; end; Reg.Free; end; |
AW: Dateiendung registrieren - Problem
Wenn ParamCount 1 ist, wurde doch ein Parameter übergeben.
[edit] Übrigens ist der Code nicht so sonderlich. Zumindest sollte man einen Ressourcenschutzblock (try - finally) einbauen, ggf. mal die Rückgabewerte von OpenKey auswerten und je OpenKey ein CloseKey aufrufen. Wie sieht es denn hiermit aus? ![]() |
AW: Dateiendung registrieren - Problem
Ups da habe ich mich vertippt. Ich meinte natürlich 0.
Mit dem Code von about selbes Ergebnis. Vielleicht liegt es an der VM? |
AW: Dateiendung registrieren - Problem
Hast Du denn auch administrative Rechte?
|
AW: Dateiendung registrieren - Problem
Die habe ich, ja.
Sowohl ich als Windows-Benutzer als auch die Anwendung selber. |
AW: Dateiendung registrieren - Problem
Ich hab das mal im Editor umgeschrieben, das ist zwar nicht sonderlich elegant, aber versuch doch mal
Delphi-Quellcode:
Ist zwar ungetestet, sollte aber zumindest den Grund nennen, wieso es nicht klappt.
type
ERegException = class(Exception); procedure InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer; ExtVerb: string = 'open'); var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.OpenKey(Extension, True) then try Reg.WriteString('', ExtDescription); finally Reg.CloseKey; end else raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [ExtDescription]); if Reg.OpenKey(ExtDescription, True) then try Reg.WriteString('', FileDescription); if Reg.OpenKey('DefaultIcon', True) then try Reg.WriteString('', OpenWith + ',' + IntToStr(IconIndex)); finally Reg.CloseKey; end else raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [FileDescription + '\DefaultIcon']); if Reg.OpenKey('Shell\' + ExtVerb + '\Command', True) then try Reg.WriteString('', '"' + OpenWith + '" "' + ParamString + '"'); finally end else raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [ExtDescription + '\Shell\' + ExtVerb + '\Command']); finally Reg.CloseKey; end else raise ERegException.CreateFmt('Schlüssel HKEY_CLASSES_ROOT\%s konnte nicht geöffnet/angelegt werden.', [FileDescription]); finally Reg.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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