Entwickler-Ecke

Dateizugriff - Eine verknüpfte Datei öffnen


patmann2001 - Mi 24.07.02 20:34
Titel: Eine verknüpfte Datei öffnen
Hallo

Ich habe ein "eigenes" Dateiformat entwickelt für ein Spiel. Der User soll nun wie z.B. bei einer doc-Datei auf den Dateinamen doppelklicken und dann soll die Datei in meinem Programm geladen werden. Zur Zeit startet mein Programm aber nur. Die Datei muss ich immer noch selber laden. Was muss ich machen damit meine Exe die Datei dann auch läd? Wie kann ich dann eine Fehlermeldung verhindern, wenn ich das Programm selbst starte, also ohne auf eine verknüpfte Datei zu klicken? :?

cu Patmann


Alibi - Mi 24.07.02 22:44

Dazu sind lediglich ein Paar Regeinträge nötig:
1.
HKEY_CLASSES_ROOT\.xxx
mit den Werten:
Standartwert = Programmname
Content Type = text/plain (z.B.)
Inhaltstyp = application/x-stuffit

2.
HKEY_CLASSES_ROOT\Programmname\DefaultIcon
Standartwert = C:\PfadZumProgramm\Programm.exe,0 // Oder 1, je nachdem, das wievielte Icon benutzt werden soll.

3.
HKEY_CLASSES_ROOT\Programmname\Shell\Open\Command
Standartwert = " C:\PfadZumProgramm\Programm.exe" "%1"

Nun wird bei einem Doppelklick auf eine entsprechende Datei mit der Endung dein Programm gestartet und der Dateiname und Pfad stehen in ParamStr(1).

Hier ein Beispiel, wie ich damals die Regeinträge in einem alten Programm von mir gelöst hatte:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
[REGISTRY]
Root: HKCR; Subkey: ".vtd"; ValueType: string; ValueData: "VTrainer";Flags:uninsdeletekey ;
Root: HKCR; Subkey: ".vtd"; ValueType: string; ValueName:"Content Type" ;ValueData: "text/plain";Flags:uninsdeletekey ;
Root: HKCR; Subkey: "VTrainer";Flags:uninsdeletekey ;
Root: HKCR; Subkey: "VTrainer\Shell";Flags:uninsdeletekey ;
Root: HKCR; Subkey: "VTrainer\Shell\Open";Flags:uninsdeletekey ;
Root: HKCR; Subkey: "VTrainer\DefaultIcon";ValueType: string; ValueData: "{app}\FileIco.ico,0"; Flags:uninsdeletekey ;
Root: HKCR; Subkey: "VTrainer\Shell\Open\command";ValueType: string; ValueData: "{app}\Vokabeltrainer.exe ""%1""";Flags:uninsdeletekey ;

Das ist aus einem Innosetup Install Script.


patmann2001 - Fr 26.07.02 15:20

Wie kann ich den ParamStr(1) aufrufen?
cu Patmann


cbs - Fr 26.07.02 15:26

tag auch

ganz einfach:

Quelltext
1:
function ParamStr(Index: Integer): string;                    

also Dateiname:= ParamStr(1);
wobei Dateiname ein string ist

der index 0 ist der Applicationname + path und der index 1, 2, 3 ... usw. sind die übergebenen Parameter