open(1)
特にこの形式での使用には、コマンドラインツールと同等のCocoaが必要です。
open -a <SomeApplication> <SomeFile> --args <Arg1> <Arg2> ...
例としてQuickTimeを取り上げます。次のコマンドラインはQuickTimeを使用してファイルを開き、引数はQuickTimeが起動時にファイルを再生するかどうかを制御できます。
open -a "QuickTime Player" a.mp4 --args -MGPlayMovieOnOpen 0 # or 1
Objective-C/Cocoaを使用したMacアプリの起動を読みました。prosseekの答えは、と同等だと思いますがopen -a <App> <File>
、引数を指定しない場合にうまく機能します。ughoavgfhwの答えopen -a <App> --args <Arg1> <Arg2> ...
は、私が開くファイルを指定しない場合に、と同等だと思いますが、うまく機能します。ただし、どちらもファイル名と引数を同時に指定することはできません。
また、ファイル名を引数リストに追加しようとしました。これは、UNIXプログラムで使用される一般的な方法です。一部のアプリケーションはそれを受け入れることができるようですが、一部は受け入れられません。QuickTimeは、ファイルを開くことができないというエラーを表示します。私は次のコードを使用しています。
NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
NSURL *url = [NSURL fileURLWithPath:[workspace fullPathForApplication:@"QuickTime Player"]];
NSArray *arguments = [NSArray arrayWithObjects:@"-MGPlayMovieOnOpen", @"0", @"a.mp4", nil];
[workspace launchApplicationAtURL:url options:0 configuration:[NSDictionary dictionaryWithObject:arguments forKey:NSWorkspaceLaunchConfigurationArguments] error:nil];
// open -a "QuickTime Player" --args -MGPlayMovieOnOpen 0 a.mp4
ファイルを開くメカニズムは通常の引数とは異なるようです。誰かがの内部を説明できますかopen(1)
、それとも私に解決策を教えてもらえますか?ありがとう。