Zusätzliche Möglichkeit zum Öffnen einer Datei im Explorer
Hallo liebe DP Gemeinde,
wenn ich im Explorer mit der rechten Maustaste auf einen Ordner klicke, dann kommt ein Kontextmenu, wo man etwas auswählen kann. Die Einträge in der Registry stehen im "Directory". Wenn ich aber auf eine Datei klicke, wo stehen in der Registry die Einträge dafür? Es geht darum, eine zusätzliche Möglichkeit zu haben, eine Datei mit einem bestimmten Programm zu öffnen, ohne diesen Dateityp für das Programm registriert zu haben. Beispiel: nach dem Rechtsclick auf eine Datei Beispiel.txt erscheint: ----------- - Open - Add to Beispiel.zip - SendTo... - usw. ----------- Mit der Open Auswahl startet nun ein Programm, nehmen wir mal an NotePad.exe, um die Datei anzuzeigen, weil die Extension .txt eben mit NotePad verknüpft ist. Ich hätte aber gern, das im ContextMenu folgendes zusätzlich auftaucht: ----------- - Open - Open with My.exe - Add to Beispiel.zip - SendTo... - usw. ----------- Dann wird die Datei Beispiel.txt mit My.exe geöffnet. Es soll hier völlig egal sein, welche Extension die ausgewählte Datei hat, wichtig wäre mir nur, daß es bei jeder Datei dieses "Open with My.exe" gibt. Mit freundlichen Grüßen, Manfred. |
Vielleicht habe ich die Antwort selbst gefunden
Vielleicht habe ich die Antwort selbst gefunden..
Ich glaube in der Code-Library was passendes unter "Kontextmenü einer Datei ergänzen" gefunden zu haben, aber das bezieht sich auch wieder nur auf bereits registrierte Dateitypen:(( Mfg, Manfred |
Lösung gefunden
Geschafft,
vielen Dank ans DP-Team, in der Code-Library unter Datei mit Programm via Popupmenü in Windows öffnen http://<br /> <img src="styles/elis...with</a><br /> fand ich die Lösung. Hierzu noch eine Anmerkung. Man kann nicht immer davon ausgehen, daß eine z.B. ".txt" Dateiextension auch zu einem "txtfile" Dateityp gehört. Ich denke da an .bmp das mit Paint.Document verknüpft wurde, oder jeder, der IrfanView verwendet und es mit Fileextensionen verknüpft hat, kennt die zahllosen Einträge IRFANVIEW.bmp, ... usw. Deshalb mein Vorschlag, vor dem Aufruf von
Delphi-Quellcode:
das erst mal prüfen.
procedure AddOpenEntry(filetype, registryname, popupname, OpenWith: String);
{bzw.} procedure DeleteOpenEntry(filetype, registryname: String); {findet man beide unter obiger URL}
Delphi-Quellcode:
Wichtig, zu guter letzt, das Programm muß den Parameter auslesen können, um auf das ausgewählte
procedure My_AddOpenEntry;
var fExt, fType : string; Reg: TRegistry; begin {liefert zum obligatorischen ".txt" das richtige d.h. eingetragene "txtfile"} fExt:='.txt'; fType:=''; Reg:=TRegistry.Create; try Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.OpenKeyReadOnly(fExt) then fType:=Reg.ReadString(''); Reg.CloseKey; finally Reg.Free; end; {zum Hinzufügen ins Explorer PopupMenü} {wenn die Extension fExt nicht gefunden wurde, wird nichts "reingehängt"} if (fType <> '') then AddOpenEntry(fType, ExtractFileName(Application.ExeName), {*1*, muß identisch sein mit *2*} 'Öffnen mit meiner Anwendung', Application.Exename); {oder zum Herausnehmen aus dem Explorer PopupMenü} {wenn die Extension fExt nicht gefunden wurde, wird nichts "rausgenommen"} if (fType <> '') then DeleteOpenEntry(fType, ExtractFileName(Application.ExeName)); {*2*, muß identisch sein mit *1*} end; zu öffnende File im Explorer via PopupMenü reagieren zu können. Sinnigerweise beim Starten des Programms aka Formulars.
Delphi-Quellcode:
Und tschüß.
procedure TForm1.FormCreate(Sender: TObject);
var i : integer; sfn : string[255]; {SelectedFileName} begin sfn:=Paramstr(1); {das klappt mit der Datei "Ausgewählt.txt"} for i:=2 to ParamCount do sfn:=sfn+' '+Paramstr(i); {und jetzt auch mit Datei "Ausgewählt zum Öffnen.txt"} {... hier steht dann Euer Code} end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz