Einzelnen Beitrag anzeigen

EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#1

Datei mit Programm via Popupmenü in Windows öffnen.

  Alt 10. Jun 2006, 07:29
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
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat