Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi registry.....symbole (https://www.delphipraxis.net/5655-registry-symbole.html)

maximi 14. Jun 2003 19:00


registry.....symbole
 
Hallo!!!
Ich probiere gerade nen Monopoly-game aus und man kann im Spiel seine Spielstände abspeichern! Diese Dateien sollen die Endung .mon haben.
So mein Problem ist:
Wenn man die Datei öffnet soll automatisch das Monopoly Spiel geöffnet werden mit den Einstellungen von der Datei und ich möchte das diese Datei ein Symbol hat, wie z.B. mp3 Dateien das Winamp Symbol!!

Daniel B 14. Jun 2003 19:08

Hallo,

Du musst die Endung im System registrieren, bzw. in der Registry eintragen. Anschliessend musst Du Dein Programm mit Parameter starten können. Sprich die Datei die übergeberden ist, lesen und dementsprechned dann handeln.

Grüsse, Daniel :hi:

maximi 14. Jun 2003 19:30

Aha, kannst du mir vielleicht ein kleines Bsp zeigen, wie das mit der Reg. funzt???

Alexander 14. Jun 2003 19:34

Ich glaube das steht unter anderem in der Code-Library. Desweiteren solltest du was passendes mit der board-Suche finde

Daniel B 14. Jun 2003 19:45

Hallo,

Du musst unter HKEY_CLASSES_ROOT, ein neuen Schlüssel, also Deine Endung, eintragen und mit dem entsprechenden Programm über eine Zeichenfolge dann eintragen.
Wie man grundsätzlich mit der Registry umgeht, siehst Du hier im Forum wenn Du die Suche bemühst.

Grüsse, Daniel :hi:

Daniel B 14. Jun 2003 19:45

Hallo,

Du musst unter HKEY_CLASSES_ROOT, ein neuen Schlüssel, also Deine Endung, eintragen und mit dem entsprechenden Programm über eine Zeichenfolge dann eintragen.
Wie man grundsätzlich mit der Registry umgeht, siehst Du hier im Forum wenn Du die Suche bemühst.

Grüsse, Daniel :hi:

Christian Seehase 14. Jun 2003 19:47

Moin Maximi,

falls Du schon mal einen Blick in die Registry geworfen hast, wird Dir vielleicht der Key HKEY_CLASSES_ROOT aufgefallen sein.
In diesem sind, u.a., alle bislang registrierten Datentypen verzeichnet.

Als erstes brauchst Du einen Eintrag für Deinen Typen als .mon

HKEY_CLASSES_ROOT\.mon

hierin wird jetzt ein Standardwert (String) erzeugt (als Name muss ein Leerstring verwendet werden) der als Key für die weiteren Informationen dient, z.B. maximimonfile.
Dieser Wert wird jetzt auch als Key unter HKCR angelegt, so dass Du

HKEY_CLASSES_ROOT\maximimonfile

als Key hast.

Unter diesem Key werden jetzt die eigentlichen Informationen gespeichert. Da Du ein eigenes Icon benötigst musst Du einen Key DefaultIcon erzeugen, und hier als Standardwert den Pfad zu der Datei angeben, die das Icon enthält, sowie die Iconnummer (null basiert) in dieser Datei, abgetrennt mit einem Komma.

Ausserdem muss unter maximimonfile noch eine Keystruktur angelegt werden, so dass Du hinterher

HKEY_CLASSES_ROOT\maximimonfile\shell\open\command

hast.
In dem command Key wird nun wieder ein Standardwert angelegt, der den Pfad zu Deinem Programm (eingeschlossen in ") gefolgt von einem Blank und "%1" enthält, damit nicht nur das Programm gestartet, sondern auch ein Parameter übergeben wird.
Wichtig sind die doppelten (!) Anführungsstriche, damit eventuelle Blanks im Pfad nicht zu unangenehmen Überraschungen führen.
Alle Standardwerte die hier einzutragen sind, sind Strings.

Fertig sähe dass dann so aus:

HKEY_CLASSES_ROOT\.mon
Wertname: ''
Wert : maximimonfile

HKEY_CLASSES_ROOT\maximimonfile\DefaultIcon
Wertname: ''
Wert : "C:\Pfad\zu\der\Datei\mit\dem\Icon\Monopoly.ex e",0

HKEY_CLASSES_ROOT\maximimonfile\Shell\Open\Command
Wertname: ''
Wert : "C:\Pfad\zu\der\Datei\mit\dem\Icon\Monopoly.ex e" "%1"

Man kann natürlich noch eine Ganze Menge mehr in diesem Bereich tun, aber für den von Dir genannten Zweck reicht das hier schon.

Weitere Einzelheiten kannst Du im PSDK oder auf MSDN unter
Shell Basics: Extending the Shell, Creating a File Association
nachlesen.

maximi 14. Jun 2003 19:56

Ja, halbwegs verstanden, aber wie bringe ich das in einen Delphi-Code???

Christian Seehase 14. Jun 2003 19:59

Moin maximi,

dazu ist für diesen Zweck TRegistry bestens zu gebrauchen.
Und dafür solltest Du hier reichlich Beispiele finden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 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