¿Hay un no-java, forma multiplataforma para iniciar la aplicación asociada para un determinado tipo de archivo?

StackOverflow https://stackoverflow.com/questions/1480971

Pregunta

En primer lugar, He encontrado un par preguntas específicas y respuestas de este. Busco solución de plataforma más "nativo", pero el tiro cruzado, usando C, C ++, algún tipo de secuencias de comandos shell, o, en mi caso, Qt.

Así que la pregunta es, ¿son estándar, multiplataforma, formas de abrir mediante programación la aplicación asociada para ciertos tipos de archivos. O por lo menos para saber si hay aplicaciones asociadas y ser capaz de localizar y lanzarlos?

Por multiplataforma que quiero decir de Windows, OSX y Linux (Gnome / KDE). El caso de uso es tener una base de datos con los archivos almacenados como manchas que se pueden leer en los tres objetivos diferentes.

¿Fue útil?

Solución

No sé de ninguna manera multiplataforma.

En Windows, existe el comando start, que se lanzará la aplicación por defecto asociado. (Por ejemplo start foo.doc pondrá en marcha el editor de documento de Word por defecto, start http://StackOverflow.Com/ el navegador web por defecto y start mailto:mail@example.com la aplicación de correo predeterminado.)

En OS X no es el comando open, que hace lo mismo.

Linux es sólo un núcleo de sistema operativo. núcleos del sistema operativo no sabe nada acerca de los "tipos de archivos" o "tipos MIME" o "aplicaciones asociadas" o algo por el estilo. Por lo tanto, una cosa tan simple no puede existir para Linux.

El Grupo Freedesktop tiene una especificación para un comando xdg-open, que trabaja en todos los escritorios gráficos Freedesktop compatibles (ya sean Linux, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, OpenSolaris o de otra manera). Sin embargo, es evidente que no garantiza que funcione en sistemas no Freedesktop y es sin duda no se garantiza que funcione en sistemas no gráficos.

En los tres casos, se trata de una aplicación de línea de comandos, no una API de C o C ++, pero es obvio que se puede llamar a través de system.

Otros consejos

Puesto que usted ha observado que está utilizando Qt, vale la pena mencionar la href="http://doc.trolltech.com/qdesktopservices.html" rel="noreferrer"> QDesktopServices clase OpenUrl (qurl) método . Lo hace bastante más de lo que usted ha descrito en todas las plataformas soportadas por Qt.

Existe la llamada de sistema en C, por ejemplo:

system("main.cpp");

Esto abrirá el archivo con el editor por defecto (Visual Studio en mi caso). No estoy seguro acerca de Linux y Mac, puede que tenga que escribir "main.cpp abierta" allí (que puede ser atendido por construcciones #ifdef).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top