Gibt es eine nicht-javaübergreifende Plattform, um die zugehörige Anwendung für einen bestimmten Dateityp zu starten?

8

Zuerst Ich fand ein Paar von Java spezifischen Fragen und Antworten dafür. Ich suche nach "nativer", aber plattformübergreifender Lösung, mit C, C ++, irgendeiner Art von Shell-Skripten oder in meinem Fall mit Qt.

Die Frage ist also, gibt es standardmäßige, plattformübergreifende Möglichkeiten, programmgesteuert die zugehörige Anwendung für bestimmte Dateitypen zu öffnen. Oder zumindest herausfinden, ob es zugehörige Anwendungen gibt und diese lokalisieren und starten können?

Mit plattformübergreifend meine ich Windows, OSX und Linux (gnome / kde). Der Anwendungsfall ist eine Datenbank mit gespeicherten Dateien als Blobs, die auf den drei verschiedenen Zielen gelesen werden.

    
FeatureCreep 26.09.2009, 10:44
quelle

3 Antworten

10

Ich kenne keinen plattformübergreifenden Weg.

In Windows gibt es den Befehl start , der die zugehörige Standardanwendung startet. (Z. B. start foo.doc startet den Standard-Word-Dokumenteditor, start http://StackOverflow.Com/ den Standard-Webbrowser und start mailto:[email protected] die Standard-Mail-App.)

In OS X gibt es den Befehl open , der dasselbe tut.

Linux ist nur ein Betriebssystem Kernel. OS-Kernel wissen nichts über "Dateitypen" oder "MIME-Typen" oder "zugehörige Anwendungen" oder ähnliches. Daher kann so etwas für Linux einfach nicht existieren.

Die Freedesktop-Gruppe hat eine Spezifikation für einen xdg-open -Befehl , die auf allen Freedesktop- Kompatible grafische Desktops (seien es Linux, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, OpenSolaris oder andere). Es ist jedoch nicht garantiert, dass es auf Nicht-Freedesktop-Systemen funktioniert, und es ist sicher nicht garantiert, dass auf nicht-grafischen Systemen funktioniert.

In allen drei Fällen ist dies eine Befehlszeilenanwendung, keine C- oder C ++ - API, aber Sie können sie natürlich über system aufrufen.

    
Jörg W Mittag 26.09.2009, 18:50
quelle
4

Da Sie festgestellt haben, dass Sie Qt verwenden, sollten Sie die QDesktopServices -Klasse und insbesondere openUrl (QUrl) Methode. Es entspricht ziemlich genau dem, was Sie auf allen von Qt unterstützten Plattformen beschrieben haben.

    
IgKh 27.09.2009 12:20
quelle
1

Es gibt den Systemaufruf in C, zum Beispiel:

%Vor%

Dies öffnet die Datei mit dem Standard-Editor (in meinem Fall Visual Studio). Ich bin mir nicht sicher über Linux und Mac, Sie müssen möglicherweise "open main.cpp" dort schreiben (was durch #ifdef Konstrukte erledigt werden kann).

    
StackedCrooked 26.09.2009 13:05
quelle