PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiendungen mit einem Programm verknüpfen


Exxtreme
2003-02-16, 12:18:32
Hallo,

gibt es eine Möglichkeit dies schnell und sauber zu erledigen mittels eines API-Calls? Auch das Löschen dieser Verknüpfung sollte so gehen.

Auf Registry-Fummeleien ist /me nicht scharf.

Danke im Voraus.

mutzel
2003-02-16, 18:12:11
ich glaub nich das das ohne die regestry geht ... ausserdem was is so schlimme daran ein bissel in der regestry rumzufummeln ... jeder macht das so

Exxtreme
2003-02-16, 18:19:09
Originally posted by mutzel
ich glaub nich das das ohne die regestry geht ... ausserdem was is so schlimme daran ein bissel in der regestry rumzufummeln ... jeder macht das so
Naja, normalerweise hat Windows für jeden Mist eine API-Funktion. Wäre Schade wenn's hier nichts gäbe.

Demirug
2003-02-16, 18:37:22
AFAIK geht das wirklich nur über die Registry.

mutzel
2003-02-16, 18:46:32
was ist so schlecht an der registry methode?

Exxtreme
2003-02-16, 19:47:39
Originally posted by mutzel
was ist so schlecht an der registry methode?
Also an dieser Methode ist nichts schlecht nur ich bevorzuge immer Betriebssystem- oder API-Funktionen wenn ich irgendwie was im System einstellen will. Ist meist betriebssystemübergreifend besser.

Exxtreme
2003-02-16, 19:52:32
Originally posted by Demirug
AFAIK geht das wirklich nur über die Registry.
Ja, das denke ich langsam auch.

Trotzdem Danke euch allen. :wink:

BoRaaS
2003-02-17, 15:35:01
hmm, evt hilft dir das weiter :

Erstellung einer Dateierweiterung:

Assoc [.erw[=[Dateityp]]]

.erw=Name der Dateierweiterung
Dateityp= Name des Dateityps

Beispiel:

Assoc .tst=Testdatei

Erstellung der Verknüpfung der Dateierweiterung mit einem Programm:

Ftype Dateityp=Programm /Parameter

Dateityp= Name des Dateityps
Programm=das Programm mit dem die Datei geöffnet werden soll

Beispiel

Ftype Testdatei=notepad.exe %1


ist zwar auch keine API Funktion, erspart dir aber die Registry

Greets BoRaaS

Xmas
2003-02-17, 15:41:30
Originally posted by BoRaaS
hmm, evt hilft dir das weiter :

Erstellung einer Dateierweiterung:

Assoc [.erw[=[Dateityp]]]

.erw=Name der Dateierweiterung
Dateityp= Name des Dateityps

Beispiel:

Assoc .tst=Testdatei

Erstellung der Verknüpfung der Dateierweiterung mit einem Programm:

Ftype Dateityp=Programm /Parameter

Dateityp= Name des Dateityps
Programm=das Programm mit dem die Datei geöffnet werden soll

Beispiel

Ftype Testdatei=notepad.exe %1


ist zwar auch keine API Funktion, erspart dir aber die Registry

Greets BoRaaS
Was für eine Sprache ist das? Soll das ein Installationsskript sein?

BoRaaS
2003-02-17, 15:44:40
nee,
das sind einfach 2 befehle von nt/2000/xp
weiß aber net ob die ein installiertes resource kit benötigen

Exxtreme
2003-02-17, 15:47:32
Danke, aber ich habe es schon hingekriegt. :)
Ist zwar Fummelei in der Registry aber es funktioniert. Wenn ihr ganz genau wissen wollt, wie es geht, dann schreibe ich was dazu.

BoRaaS
2003-02-17, 15:49:15
jo mach mal

Exxtreme
2003-02-17, 15:50:36
Originally posted by BoRaaS
jo mach mal
Heute abend. :)

Exxtreme
2003-02-17, 22:42:19
OK Mädelz,

hier mal eine kleine Gebrauchsanleitung. ;)

Um so eine Verknüpfung mit einem Programm zu erstellen, sind 2 Hauptschlüssel nötig, und zwar einer, der die Endung definiert und ein anderer, in welchem beschrieben ist, was mit der Endung passieren soll.

Beide werden im Rootkey "HKEY_CLASSES_ROOT", kurz HKCR angelegt.

Der erste Schlüssel wird immer wie die gewünschte Endung benannt z.B. ".rtp" oder ".mp3". Der zweite Schlüssel bekommt den Datentypnamen z.B. "rTool.Profile" oder "Winamp3.File".

Wenn beide angelegt sind dann muss man den Schlüssel, der die Endung definiert mit dem Dateityp-Schlüssel verknüpfen. Man macht dies indem man dem Standard-Wert im Endungsschlüssel als Inhalt den Namen des Dateityp-Schlüssels verpasst.

Also aus (Standard) = NULL wird (Standard) = rTool.Profiles.


Nachdem diese Schlüssel miteinander verknüpft sind, muss man definieren, mit was diese Endung geöffnet werden soll.

Dazu legt man im Datentyp-Schlüssel einen Unterschlüssel und nennt ihn "shell". Dann legt man in diesem Unterschlüssel einen weiteren Unterschlüssel an und benennt ihn "open". Schliesslich legt man wieder im "open"-Schlüssel wieder einen Unterschlüssel an und benennt ihn "command". Als letzten Schritt muss man dem (Standard)-Wert im "command"-Schlüssel als Inhalt den Pfad zur gewünschten Exe eintragen incl. vielleicht nötiger Parameter. Also z.B. "c:\rTool\rTool.exe -quickstart "%1" ".

Wenn man dann dem Datentyp ein entsprechendes Icon verpassen will, dann legt man im Datentyp-Key einen Unterschlüssel an und benennt ihn "DefaultIcon". Und im Standard-Wert gibt man als Inhalt den Pfad zur entsprechenden Datei an, die die gewünschten Symbol-Informationen enthält und dann den Index des Symbols, da einige Dateien mehrere Symbole enthalten können... z.B. "c:\rTool\rTool.exe,0".


Ich hoffe das hilft weiter.

stabilo_boss13
2003-02-21, 14:56:29
Originally posted by Exxtreme
OK Mädelz,

hier mal eine kleine Gebrauchsanleitung. ;)

Beide werden im Rootkey "HKEY_CLASSES_ROOT", kurz HKCR angelegt.

Der erste Schlüssel wird immer wie die gewünschte Endung benannt z.B. ".rtp" oder ".mp3". Der zweite Schlüssel bekommt den Datentypnamen z.B. "rTool.Profile" oder "Winamp3.File".

Wenn beide ...

... z.B. "c:\rTool\rTool.exe,0".

Ich hoffe das hilft weiter.

Ja, eine andere Möglichkeit als über die Registry kenne ich auch nicht.

Aber man sollte zum Abschluss der Änderungen noch die Api-Funktion SHChangeNotify aufrufen. Die teilt der Shell nämlich mit, dass sich was geändert hat.

Das hat dann u.a. zur Folge, dass im Explorer oder auf dem Desktop, gleich die richtigen Icons angezeigt werden.

Das kennt man z.B. aus der Installation von Winzip. Zuerst haben die Zipdateien kein Icon. Nach der Installation zeigen sie dann aber gleich automatisch das Winzip-Icon.