Pregunta

Deseo poder ejecutar un editor de texto desde mi aplicación, según lo indicado por el usuario en la variable de entorno TEXT_EDITOR. Ahora, suponiendo que no haya nada en esa variable, quiero establecer de forma predeterminada el programa TextEdit que se incluye con OSX. ¿Es kosher codificar /Applications/TextEdit.app/Contents/MacOS/TextEdit en mi aplicación, o hay una mejor manera de llamar al programa?

Editar: para el registro, estoy limitado a ejecutar una ruta de aplicación específica, en C. No estoy abriendo una ruta a un archivo de texto.

Edición 2: En serio gente, no estoy abriendo un archivo aquí. Estoy preguntando por una ruta de aplicación por alguna razón.

¿Fue útil?

Solución

En su segunda edición, suena como si solo quisiera obtener la ruta a TextEdit, esto se puede hacer fácilmente utilizando el método NSWorkspace absolutePath ForApp BundleWithIdentifier:

NSString *path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.apple.TextEdit"];

Otros consejos

Mac OS X tiene un mecanismo llamado "identificadores de tipo uniforme". que utiliza para rastrear asociaciones entre tipos de datos y aplicaciones que pueden manejarlos. El subsistema que gestiona esto es Launch Services. Puede hacer una de dos cosas:

  • Si tiene un archivo con una extensión de ruta razonablemente conocida, p. .txt , puede pedirle a NSWorkspace que abra el archivo en la aplicación adecuada.

  • Si no tiene una extensión de ruta conocida, pero conoce el tipo de datos, puede solicitar a Launch Services que busque la aplicación predeterminada para ese tipo y luego preguntar NSWorkspace para abrir el archivo en esa aplicación específica.

Si lo hace de esta manera obtendrá el mismo comportamiento que el Finder, y no tendrá que bifurcar () / exec () o usar system () solo para abrir un archivo.

Creo que el hardcoding " Aplicaciones " no funcionará si la configuración de idioma del usuario no es inglés. Por ejemplo, en Norsk, las "Aplicaciones" la carpeta se llama " Programador " ;.

El documento de Apple sobre internacionalización es aquí . A partir de la página 45 hay una sección sobre el manejo de nombres de ruta localizados.

Creo que Mac OS X proporciona un mecanismo de aplicación predeterminado, por lo que .txt se abrirá en TextEdit.app o Emacs o GVim o lo que el usuario haya especificado. Sin embargo, no pude encontrar nada en línea.

Puede ejecutar el siguiente comando desde su aplicación:

open <full path to text file>

Esto abrirá el archivo de texto en el editor de texto predeterminado. Puede abrir cualquier tipo de archivo con el comando abrir .

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