小编Yux*_*eng的帖子

用于启动带参数的应用程序的Cocoa代码

我想要一个Cocoa等效的命令行工具open(1),特别是对于这种形式的用法:

open -a <SomeApplication> <SomeFile> --args <Arg1> <Arg2> ...
Run Code Online (Sandbox Code Playgroud)

以QuickTime为例.以下命令行将使用QuickTime打开文件,参数可以控制QuickTime是否在启动时播放该文件.

open -a "QuickTime Player" a.mp4 --args -MGPlayMovieOnOpen 0 # or 1
Run Code Online (Sandbox Code Playgroud)

我已阅读使用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 …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c

5
推荐指数
1
解决办法
2165
查看次数

标签 统计

cocoa ×1

macos ×1

objective-c ×1