私はアプリケーションがあります:TexturePacker。 アプリケーションフォルダ内のアプリケーションアイコンをクリックすると、GUIが起動します。 端末に「texturepacker」と入力すると、コマンドラインバージョンが実行されます。プログラムでコマンドラインからアプリのコマンドラインバージョンを起動する方法は?
プログラムでコマンドラインバージョンを起動したいとします。以下のコードを使用すると、GUIが起動します。ターミナルで「テクスチャ・パッカー」を入力したように、アプリケーション(コマンドライン・バージョン)が起動するように、どのシェル・コマンドを使用する必要がありますか。
NSTask *theProcess = [[NSTask alloc] init];
[theProcess setLaunchPath:@"/usr/bin/open"];
[theProcess setArguments:[NSArray arrayWithObjects:
@"-a",
@"/Applications/TexturePacker.app",
nil]];
// Arguments to the command: the name of the
// Applications directory
[theProcess launch];
// Run the command
[theProcess release];
これは問題の場合です。謝罪します。私はnoobtasticです。 :S
編集:その一部を示します。私はそれを起動するには、アプリケーション内のバイナリへのパスを指定する必要がありました。しかし、どのようにそれに議論を引き渡すのですか?配列に引数を追加すると、シェルは "open"コマンドの引数であるとみなします。テクスチャパッカーへのパスを文字列に追加すると、シェルはアプリケーションが見つからないと言います。 :S
なぜあなたは、プログラムを起動するための 'は/ usr/binに/ open'を使用していますか?このようなコマンドラインプログラムを起動するには、NSTaskの起動パスをテクスチャパッカーのバイナリに設定できるようにし、setArgumentsをtexturepackerの引数を含む配列に設定するだけです。 – tcovo
本当に '/ usr/bin/open'を使いたいのであれば、テクスチャパッカー引数を配列に追加することで渡すことができますが、前の引数から" --args "で区切ります([open]( https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/open.1.html))。しかし、私はこのような状況では「オープン」は適切ではないと考えています。 – tcovo
あなたは正しいです!バイナリに直接アクセスして引数を渡す必要があります。あなたが質問に答えるなら、私は正しい印を付けるでしょう! :Dありがとう。 –