Einzelnen Beitrag anzeigen

manfred23

Registriert seit: 29. Aug 2008
Ort: Nürnberg
9 Beiträge
 
Delphi 6 Enterprise
 
#3

Lösung gefunden

  Alt 5. Sep 2008, 09:41
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üß.
  Mit Zitat antworten Zitat