外部アプリ起動時にパラメータを渡す

外部アプリを起動するときにパラメータを渡すのは、どうすれば良いのかとググってみると、Launching an Mac App with Objective-C/Cocoa – Stack Overflowのページを発見。

launchApplicationAtURL:options:configuration:error:

を使うのが良さそうです。NSWorkspace Class Reference

NSError *error = nil;
NSArray *arguments = [NSArray arrayWithObjects:@"引数1", @"引数2", nil];
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:外部アプリのパス options:NSWorkspaceLaunchDefault configuration:[NSDictionary dictionaryWithObject:arguments forKey:NSWorkspaceLaunchConfigurationArguments] error:&error];
//
if (error != nil) {
    NSLog(@"%@",[error localizedDescription]);
}

受け取る側のアプリでは、

[[NSProcessInfo processInfo] arguments]

を使えば良さそうなので、例えば

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

内に

NSArray* arguments = [[NSProcessInfo processInfo] arguments];
int i;
for (i = 0; i < [arguments count]; i++)
{
    NSLog(@"%d=%@\n",i,[arguments objectAtIndex:i]);
}

で、受け取ることができました。
なお、i=0にはアプリまでのパスが入っていました。i=1からが渡されたパラメータとなるようです。

コメント

タイトルとURLをコピーしました