Dateiendung mit dem eigenen Programm verknüpfen

Alles rund um die Programmierung mit Qt
Antworten
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Dateiendung mit dem eigenen Programm verknüpfen

Beitrag von samsamsam »

Hallo!!

Ich hab ein Programm geschrieben, welches unter anderem seine eigenen Zustände in einer Datei abspeichert. Wenn man dann die Datei einliesst, befindet sich das Programm im exakt gleichen Zustand wie als die Datei erstellt wurde.

Nun würde ich gerne implementieren, dass die dateiendung, mit der die datei endet mit dem programm verknüpft wird.

Das ganze soll zunächst nur auf bill-gates-platformen (windows) so laufen, mich würde aber auch interessieren, wie das unter linux laufen würde.
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

"....Das ganze soll zunächst nur auf bill-gates-platformen (windows) so laufen, mich würde aber auch interessieren, wie das unter linux laufen würde...."

das soll heissen, dass ich weder unter windows noch unter linux weiss, wie das gehen soll
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Dass deine Datei auch mit deinem Programm geöffnet wird, ist eine Frage des Betriebsystems, hat also nichts mit Qt zu tun. Bei Windows kann man m.W. beim ersten Öffnen einer Datei unbekannten Typs auswählen, mit welchem Programm dies geschehen soll und dieses auch gerade linken (ähnlich gehts in KDE, wo aber zusätzlich der Weg über die Datei-Eigenschaften möglich ist).

Eine andere Frage ist, wie du die Datei öffnest. Der Dateiname wird in solchen Fällen als zweites Argument in der Main-Funktion übergeben (argv[1]). Du musst also nur noch dieses Argument auswerten und der Lade-Routine übergeben.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

das soll heissen, dass ich weder unter windows noch unter linux weiss, wie das gehen soll
windows legt sowas, wo wohl sonst ?, in der Registry ab. Schau dir den HKEY_CLASSES_ROOT mal naeher an, vielleicht findest da muster :-)
wie die eintraege da rein kommen ?
1. wie dontinelli schon beschrieben, unbekannter dateityp->Standardanwendung festlegen.
2. Dein programm ist "selbstregistrierend" Das heisst das modifiziert die reg selber direkt und traegt sich immer ein.
3. es gibt nen setup, dem überlaesst es das zu tun
4. du lieferst ne reg-Datei (Registry-Script) mit, mit der Du dem user das machen lassen kannst (doppelklick)

Unter Linux/Unix ist dein Fenstermanager / Desktopumgebung für zustaendig. Irgendwo wirds da ne einstellungsdatei geben ...
Oder hams da scho was vereinheitlicht / greifen auf die selben einstellungen zurueck ? wuerde Sinn machen, bin da aber nimmer aufm laufenden.

Ciao...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

RHBaum hat geschrieben:Unter Linux/Unix ist dein Fenstermanager / Desktopumgebung für zustaendig. Irgendwo wirds da ne einstellungsdatei geben ...
Oder hams da scho was vereinheitlicht / greifen auf die selben einstellungen zurueck ? wuerde Sinn machen, bin da aber nimmer aufm laufenden.
Stichwort "Mime-db"
http://www.freedesktop.org/wiki/Specifi ... gMIMETutor
http://www.freedesktop.org/wiki/Specifi ... tions-spec
Hab damit aber noch nie selber was machen müssen, bin also bei Misslingen keine große Hilfe :P
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

danke für die schnelle antwort.

also ich versuch mal die fehlenden infos eines nach dem anderen zu geben.

RHBaum schrieb:
wie die eintraege da rein kommen ?
1. wie dontinelli schon beschrieben, unbekannter dateityp->Standardanwendung festlegen.
2. Dein programm ist "selbstregistrierend" Das heisst das modifiziert die reg selber direkt und traegt sich immer ein.
3. es gibt nen setup, dem überlaesst es das zu tun
4. du lieferst ne reg-Datei (Registry-Script) mit, mit der Du dem user das machen lassen kannst (doppelklick)
also ich würde gerne schon einen weg finden, dass das programm selbstregistrierend ist, also z.b. im konstruktor des mainwindows immer in der registry geguckt wird, ob die endung mit dem programm verknüpft ist und wenn nein dann verknüpfen. die anderen 3 möglichkeiten fallen aufgrund der komplexen struktur und anderem weg.

dontinelli schrieb:
Eine andere Frage ist, wie du die Datei öffnest. Der Dateiname wird in solchen Fällen als zweites Argument in der Main-Funktion übergeben (argv[1]). Du musst also nur noch dieses Argument auswerten und der Lade-Routine übergeben.
ja das habe ich schon so implementiert und auch getestet. mein ziel ist es, mit einem doppelklick auf eine datei mit einer best. endung das programm zu starten und diese datei einzulesen. also quasi dass das doppelklicken das gleiche macht wie der bereits funktionierende kommandozeilenaufruf "meinprogramm.exe c:\testdatei.xyz"

Danke schon mal, hab viele ideen und wege bekommen, wo ich noch suchen könnte etc.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das dies Platformspezifisch ist ist es wohl besser in der MSDN Doku nachzuschauen oder in einem Forum das sich damit auskennt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten