![]() |
Eigene Dateitypen verarbeiten?
Ich habe mit Hilfe des folgenden Codes einen eigenen Dateityp regestriert. Nun öffnet bei klick auf eine Datei zwar das richtige Programm, aber wie kann ich das einbinden dass mein Programm mitbekommt dass es von der Datei geöffnet wurde und mit dieser Datei dann etwas machen kann.
Folgenden Code habe ich zur Dateityp regestrierung verwendet, es ist ein Beispielcode aus einer Code Libary
Delphi-Quellcode:
uses
registry, shlobj; procedure TForm1.RegisterFileType(prefix: string; exepfad: string); var reg: TRegistry; begin reg := TRegistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; //create a new key --> .pci reg.OpenKey('.' + prefix, True); try //create a new value for this key --> pcifile reg.Writestring('', prefix + 'file'); finally reg.CloseKey; end; //create a new key --> pcifile reg.CreateKey(prefix + 'file'); //create a new key pcifile\DefaultIcon reg.OpenKey(prefix + 'file\DefaultIcon', True); //and create a value where the icon is stored --> c:\project1.exe,0 try reg.Writestring('', exepfad + ',0'); finally reg.CloseKey; end; reg.OpenKey(prefix + 'file\shell\open\command', True); //create value where exefile is stored --> c:\project1.exe "%1" try reg.Writestring('', exepfad + ' "%1"'); finally reg.CloseKey; end; finally reg.Free; end; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); end; procedure TForm1.Button1Click(Sender: TObject); begin RegisterFileType('pci', 'c:\project1.exe'); end; |
Re: Eigene Dateitypen verarbeiten?
Ich denke, du meinst, dass z.B. der Text in der Datei in ein Memo geladen wird, richtig?
Wenn ja, dann nimm doch Memo1.Lines.Loadfromfile(Paramstr(0)); oder wie das heißt. :fruebel: :-) |
Re: Eigene Dateitypen verarbeiten?
Ja, so weit war ich auch schon, aber mein Hauptproblem ist, dass ich nciht weiß wie ich es überprüfen kann ob das programm normal gestartet worden ist oder eben durch einen Datei. Muss ich das mit ParamCount machen?
|
Re: Eigene Dateitypen verarbeiten?
Ja, ParamStr(?) und ParamCount sind die Mittel, die dich zum Ziel führen.
ParamStr(0) -> Anwendungsname ParamStr(1) -> 1. Parameter ParamStr(2) -> 2. Parameter . . . ParamStr(n) -> n. Parameter ParamCount gibt die Anzahl der Parameter an. |
Re: Eigene Dateitypen verarbeiten?
Naja, du kannst doch überprüfen, ob das ParamStr(0) der Name deiner Exe ist oder der Name einer x-beliebigen Datei.
Delphi-Quellcode:
Ich denke, das ist, was du meinst :-)
if ParamStr(0)='C:\Project1.exe' then ShowMessage('Programm alleine gestartet!')
else ShowMessage('Das Programm wurde mit einer datei geöffnet!'); |
Re: Eigene Dateitypen verarbeiten?
Also muss ich nur überprüfen ob Paramcount größer als 0 ist?
|
Re: Eigene Dateitypen verarbeiten?
Ja, das zeigt an, dass ein oder mehrere Parameter übergeben wurden.
@Ultimator: In ParamStr(0) steht immer der Anwendungsname, mit oder ohne Pfad! Das ist in Windows so standard. Ich kann es aber auch ändern, da man bei CreateProcess die Parameter angeben kann. |
Re: Eigene Dateitypen verarbeiten?
O.k. ich habs hinbekommen. Vielen Dank. Ich war die ganze zeit immer kurz davor, bin immer nur an Kleinigkeiten hängengeblieben, aber ihr habt mir ja da rausgeholfen. :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz