2012-03-22 21 views
0

私はアプリケーションがあります: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

+0

なぜあなたは、プログラムを起動するための 'は/ usr/binに/ open'を使用していますか?このようなコマンドラインプログラムを起動するには、NSTaskの起動パスをテクスチャパッカーのバイナリに設定できるようにし、setArgumentsをtexturepackerの引数を含む配列に設定するだけです。 – tcovo

+0

本当に '/ usr/bin/open'を使いたいのであれば、テクスチャパッカー引数を配列に追加することで渡すことができますが、前の引数から" --args "で区切ります([open]( https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/open.1.html))。しかし、私はこのような状況では「オープン」は適切ではないと考えています。 – tcovo

+0

あなたは正しいです!バイナリに直接アクセスして引数を渡す必要があります。あなたが質問に答えるなら、私は正しい印を付けるでしょう! :Dありがとう。 –

答えて

2

実行可能プログラムを起動するには、openを使用する必要はありません。あなたはtexturepackerの引数を含む配列にsetArguments、その後することができますtexturepackerバイナリにNSTaskの起動パスを設定し、することができます

NSTask *theProcess = [[NSTask alloc] init]; 

[theProcess setLaunchPath:@"/path/to/texturepacker"]; 

// Set arguments for invoking texturepacker 
[theProcess setArguments:[NSArray arrayWithObjects: 
           @"-x", 
           @"-y", 
           @"-z", 
           nil]]; 

// Run the task 
[theProcess launch]; 

[theProcess release]; 
+0

よろしく!あなたは正しいです! :) –

関連する問題