Endung mit Programm verknüpfen

mathiasj

Bekanntes Mitglied
Hallo,
in meinem Programm werden Dateien mit einer custom Endung gespeichert. Wie kann ich festlegen, dass bei einem Doppelklick auf so eine Datei, diese in meinem Programm geöffnet wird (wie z.B. bei Word)? Oder ist diese Funktion nur unter Windows verfügbar (und wenn ja, wie geht das dann dort?)? Ich habe auch schon gegoogelt, aber nicht wirklich etwas gefunden, mir fehlen auch die Stichworte...

Vielen Dank im Vorraus!
 
windows: rechte maustase auf programm, öffnen mit -> programm aus liste auswähren -> haken bei immer mit diesem programm öffnen setzten, und auf öffnen klicken

mac ->?
 
@strußi:
Geht das auch, wenn die Dateien, mit denen man die öffnen will noch Java und noch nicht exe sind?
Wie muss dann der Konstruktor von meinem Programm aussehen?
 
Nein sorry, ich habe mich unklar ausgedrückt - Ich mein, dass ich Windows irgendwie durch Code sagen kann, dass es künftig meine Endung mit meinem Programm öffnen soll; dass die Endung also automatisch mit meinem Programm verknüpft wird (oder durch ein Prompt)?
 
Nein sorry, ich habe mich unklar ausgedrückt - Ich mein, dass ich Windows irgendwie durch Code sagen kann, dass es künftig meine Endung mit meinem Programm öffnen soll; dass die Endung also automatisch mit meinem Programm verknüpft wird (oder durch ein Prompt)?

Ich hatte nur indirekt zu deinem Thema geantwortet.
Die Wahrheit ist, dass Java nicht wirklich für solche Aufgaben gedacht ist. Für so etwas solltest du lieber Plattormsprachen nehmen:

Windoof:
- Visual Basic
- C#
- Visual C++

Linux:
- Python
- C++/Qt (Qt bei KDE)
- HTML5

Mac OS:
- AppleScript
- Objective C

Java sollte nur ungerne für solche Sachen genommen werden, da es von Plattform zu Plattform sehr unterschiedliche Methoden gibt, Standardwerte für solche Sachen einzustellen. Es ist nicht mal gesagt, dass es unter allen Linux Distros gleich funktioniert.
 
Ach du sch*****, hier fliegt aber viel gefährliches Halbwissen durch die Gegend....

Für Windows:
Du musst in die Registry schreiben. read/write to Windows Registry using Java - Stack Overflow (Erste Anwort), What registry keys are responsible for file extension association? (Auch hier die erste Antwort)

Für alle UNIX-Systeme:
Hier musst du zu allererst einmal einen MIME-Type für dein Dateiformat anlegen, wenn es den noch nicht gibt. Für MIME-Types ist die Datei
Code:
/etc/mime.types
verantwortlich, die Struktur ist eigentlich selbsterklärend.
Um nun einen oder mehrere MIME-Types mit deiner Anwendung zu verknüpfen musst du eine neue
Code:
.desktop
Datei in
Code:
/usr/share/applications/
anlegen. Hier ein Beispiel mit GIMP 2.7:
Code:
[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;
Wichtig für deine Zwecke sind hier die Einträge
Code:
Exec
,
Code:
TryExec
,
Code:
Icon
,
Code:
Terminal
,
Code:
Categories
,
Code:
MimeType
,
Code:
Type
und
Code:
Name
. (Über die genauere bedeutung wird dir die Google-Suche aufschluss geben).

Zum Icon: Du siehst: es fehlt eine Dateiendung. Die verschiedenen Icons (unterschiedlich in Größe und Dateiformat SVG/PNG) müssen in die entsprechenden ordner in
Code:
/usr/share/icons
. Alle Dateien müssen den selben Dateinamen haben, da dieser dann in der
Code:
.desktop
landet.

[EDIT]Was mir noch sehr wichtig ist: Sowohl in NT- als auch in UNIX-Systemen kann man für Dateityp-Zuweisungen einen Befehl und nicht nur eine Datei zum ausführen angeben. Wenn man es richtig macht ist ein Nativer Wrapper nicht nötig.[/EDIT]
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben