Pergunta

Eu quero ser capaz de executar um editor de texto do meu aplicativo, como dado pelo usuário na variável de ambiente TEXT_EDITOR. Agora, assumindo que não há nada nessa variável, quero padrão para o programa TextEdit que vem com o OSX. não é kosher para /Applications/TextEdit.app/Contents/MacOS/TextEdit hardcode em meu aplicativo, ou é a melhor maneira de chamar o programa?

Edit:. Para o registro, eu estou limitado para a execução de um caminho de aplicação específica, em C. Eu não estou abrindo um caminho para um arquivo de texto

Edit 2: Sério pessoas, eu não estou abrindo um arquivo aqui. Eu estou perguntando sobre um caminho de aplicação por uma razão.

Foi útil?

Solução

Em sua segunda edição que faz parecer que você apenas deseja obter o caminho para o TextEdit, isto pode ser feito facilmente usando NSWorkspace método absolutePathForAppBundleWithIdentifier:

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

Outras dicas

Mac OS X tem um mecanismo chamado "tipo uniforme identificadores" que ele usa para rastrear associações entre tipos de dados e aplicações que podem lidar com eles. O subsistema que gerencia este é Lançamento Services. Você pode fazer uma de duas coisas:

  • Se você tem um arquivo com uma extensão caminho razoavelmente bem conhecida, por exemplo, .txt, você pode simplesmente pedir NSWorkspace para abrir o arquivo no aplicativo apropriado.

  • Se você não tem uma extensão de caminho bem conhecido, mas você sabe o tipo de dados, você pode pedir Launch Services para procurar o aplicativo padrão para esse tipo, e depois pedir NSWorkspace para abrir o arquivo em que a aplicação específica.

Se você fazê-lo desta forma, você vai ter o mesmo comportamento como o Finder, e você não terá que fork () / exec () ou sistema de uso () apenas para abrir um arquivo.

Acredito que hardcoding "Aplicações" não funcionará se a configuração de idioma do usuário não é o Inglês. Por exemplo, em Norsk a pasta "Aplicativos" é chamado de "programador".

O documento Apple na internacionalização é aqui . A partir da página 45 é uma seção sobre como lidar nomes de caminho localizadas.

Eu acredito que o Mac OS X fornece um mecanismo de aplicativos padrão, de modo que .txt será aberto em TextEdit.app ou Emacs ou GVim ou o que o usuário tenha especificado. Eu não poderia encontrar qualquer coisa online no entanto.

Você pode executar seguinte comando a partir da aplicação:

open <full path to text file>

Isto irá abrir o arquivo de texto no editor de texto padrão. Você pode abrir qualquer tipo de arquivo usando o comando open.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top