Also ich habe (weil mir gesternabend langweilig war
) mal ein bisschen in der Registry rumgestöbert und in der HKEY_CLASSES_ROOT paar interesante sachen gefunden:
Source um bei einer Textdatei bei rechtsklick in das Popup einen bsp. "Mit meinem Editor bearbeiten..." Eintrag hinzufügen:
Delphi-Quellcode:
uses Registry;
...
procedure AddOpenEntry(filetype, registryname, popupname, OpenWith: String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(filetype + '\shell\' + registryname + '\', True);
Reg.WriteString('', popupname);
Reg.CloseKey;
finally
Reg.Free;
end;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(filetype + '\shell\' + registryname + '\command\', True);
Reg.WriteString('', '"' + OpenWith + '" "%1"');
Reg.CloseKey;
finally
Reg.Free;
end;
end;
Kurze Erklärung:
filetype ist ein String der den Typ der Datei angibt. Bsp: Textdatei: txtfile
Für andere Typen einfach bisschen in der HKEY_CLASSES_ROOT stöbern...
registryname ist der String unter dem der Eintrag in der Registry gespeichert wird
popupname ist der String der beim Benutzer sichtbar ist wenn er rechts auf die Datei klickt: Bsp: Mit meinem Programm bearbeiten...
OpenWith ist dann der VOLLSTÄNDIGE Dateiname zum Programm, das geöffnet werden soll.
Wenn man den Eintrag wieder Löschen will:
Delphi-Quellcode:
uses Registry;
...
procedure DeleteOpenEntry(filetype, registryname: String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.DeleteKey(filetype + '\shell\' + registryname +'\');
Reg.CloseKey;
finally
Reg.Free;
end;
end;
Und zu guter letzt hab ich noch etwas um eine Datei durch Doppelklick zu öffnen:
Delphi-Quellcode:
uses Registry;
...
procedure SetOpen(filetype, OpenWith: String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(filetype + '\shell\open\command\', True);
Reg.WriteString('', '"' + OpenWith + '" "%1"');
Reg.CloseKey;
finally
Reg.Free;
end;
end;
So fertig...
Hoffe ihr könnt was damit anfangen...
Wenn das Prog geöffnet wird erhaltet iht durch ParamStr(1) den Dateinamen der zu öffnenden Datei.
mfg
Tobi