0

私はアプリケーションを持っています:TexturePacker。アプリケーションフォルダのアプリケーションアイコンをクリックすると、GUIが起動します。ターミナルで「texturepacker」と入力すると、コマンドラインバージョンが実行されます。

プログラムでコマンドラインバージョンを起動したい!以下のコードを使用すると、GUIが起動します。ターミナルで「texturepacker」と入力したかのようにアプリケーション(コマンドラインバージョン)を起動するには、どのシェルコマンドを使用する必要がありますか。

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];

これが初心者の質問である場合。謝罪します。私は素晴らしかった。:S

編集:その一部を理解しました。アプリを起動するには、アプリ内でバイナリへのパスを指定する必要がありました。しかし、どうすればそれに引数を渡すことができますか?配列にさらに引数を追加すると、シェルはそれが「open」コマンドの引数であると見なします。テクスチャパッカーへのパスを使用して文字列に追加すると、シェルはアプリケーションが見つからないと表示します。:S

4

1 に答える 1

2

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

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];
于 2012-03-22T15:38:35.857 に答える