Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zusätzliche Möglichkeit zum Öffnen einer Datei im Explorer (https://www.delphipraxis.net/119937-zusaetzliche-moeglichkeit-zum-oeffnen-einer-datei-im-explorer.html)

manfred23 3. Sep 2008 12:54


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.

manfred23 3. Sep 2008 13:17

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

manfred23 5. Sep 2008 09:41

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:
procedure AddOpenEntry(filetype, registryname, popupname, OpenWith: String);
{bzw.}
procedure DeleteOpenEntry(filetype, registryname: String);
{findet man beide unter obiger URL}
das erst mal prüfen.

Delphi-Quellcode:
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;
Wichtig, zu guter letzt, das Programm muß den Parameter auslesen können, um auf das ausgewählte
zu öffnende File im Explorer via PopupMenü reagieren zu können. Sinnigerweise beim Starten des
Programms aka Formulars.

Delphi-Quellcode:
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;
Und tschüß.


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