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.
Dateiendung mit dem eigenen Programm verknüpfen
-
dontinelli
- Beiträge: 146
- Registriert: 22. September 2006 20:53
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.
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.
windows legt sowas, wo wohl sonst ?, in der Registry ab. Schau dir den HKEY_CLASSES_ROOT mal naeher an, vielleicht findest da musterdas soll heissen, dass ich weder unter windows noch unter linux weiss, wie das gehen soll
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...
Stichwort "Mime-db"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.
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
danke für die schnelle antwort.
also ich versuch mal die fehlenden infos eines nach dem anderen zu geben.
RHBaum schrieb:
dontinelli schrieb:
Danke schon mal, hab viele ideen und wege bekommen, wo ich noch suchen könnte etc.
also ich versuch mal die fehlenden infos eines nach dem anderen zu geben.
RHBaum schrieb:
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.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)
dontinelli schrieb:
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"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.
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: