4 Stimmen

Bevorzugter Pfad zu Anwendungen unter OSX?

Ich möchte in der Lage sein, einen Text-Editor von meiner Anwendung aus zu starten, wie vom Benutzer in der Umgebungsvariablen TEXT_EDITOR angegeben. Nun, vorausgesetzt, es gibt nichts in dieser Variable, möchte ich auf die TextEdit-Programm, das mit OSX geliefert wird standardmäßig. Ist es koscher, /Applications/TextEdit.app/Contents/MacOS/TextEdit in meiner Anwendung fest einzubinden, oder gibt es eine bessere Möglichkeit, das Programm aufzurufen?

Bearbeiten: Für das Protokoll, ich bin auf die Ausführung einer bestimmten Anwendung Pfad, in C. Ich bin nicht öffnen einen Pfad zu einer Textdatei.

Edit 2: Ernsthaft Leute, ich öffne hier keine Datei. Ich frage aus einem bestimmten Grund nach einem Anwendungspfad.

4voto

Chris Hanson Punkte 53324

Mac OS X verfügt über einen Mechanismus namens "Uniform Type Identifier", der dazu dient, Assoziationen zwischen Datentypen und Programmen, die sie verarbeiten können, zu verfolgen. Das Subsystem, das dies verwaltet, ist Launch Services. Sie können eine von zwei Möglichkeiten wählen:

  • Wenn Sie eine Datei mit einer einigermaßen bekannten Pfaderweiterung haben, z. B. .txt können Sie einfach fragen NSWorkspace um die Datei in der entsprechenden Anwendung zu öffnen.

  • Wenn Sie keine bekannte Pfaderweiterung haben, aber den Datentyp kennen, können Sie Launch Services bitten, die Standardanwendung für diesen Typ zu suchen, und dann fragen NSWorkspace um die Datei in dieser speziellen Anwendung zu öffnen.

Auf diese Weise erhalten Sie das gleiche Verhalten wie der Finder, und Sie müssen nicht fork()/exec() oder system() verwenden, um eine Datei zu öffnen.

4voto

Dave Verwer Punkte 6129

In Ihrer zweiten Bearbeitung klingt es so, als ob Sie nur den Pfad zu TextEdit abrufen möchten. Dies kann einfach mit der NSWorkspace-Methode absolutePathForAppBundleWithIdentifier erfolgen:

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

2voto

DGentry Punkte 15830

Ich glaube, das Hardcoding von "Applications" funktioniert nicht, wenn die Spracheinstellung des Benutzers nicht Englisch ist. In Norsk heißt der Ordner "Applications" zum Beispiel "Programmer".

Das Apple-Dokument zur Internationalisierung lautet aquí . Ab Seite 45 finden Sie einen Abschnitt über den Umgang mit lokalisierten Pfadnamen.

0voto

JeeBee Punkte 17329

Ich glaube, dass Mac OS X einen Standardprogrammmechanismus bietet, so dass .txt in TextEdit.app oder Emacs oder GVim oder was auch immer der Benutzer angegeben hat, geöffnet wird. Ich konnte jedoch online nichts finden.

-1voto

Vivek Punkte 16076

Sie können den folgenden Befehl in Ihrer Anwendung ausführen:

open <full path to text file>

Dadurch wird die Textdatei im Standardtexteditor geöffnet. Sie können jeden Dateityp öffnen mit open Befehl.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X