0

私のアプリには、次のような自動化ワークフローを開くボタンがあります。

- (IBAction)actionname:(id)sender {
    NSTaskname = [[NSTask alloc] init];
    [NSTaskname setLaunchPath:@"/usr/bin/automator"];
    NSArray *arguments;
    arguments = [NSArray arrayWithObjects:@"/Applications/appname.app/Contents/Resources/workflowname.workflow", nil];
    [NSTaskname setArguments:arguments];
    [NSTaskname launch];                                                                             
}

唯一の問題は、アプリのウィンドウの後ろにすべてのものが表示されることです。また、1 つのワークフローが別のアプリを起動し、これもウィンドウの背後に表示されます。

どうすればこれを修正できますか?

4

1 に答える 1

2

NSRunningApplicationを使用して、NSTaskプロセスを次のようなPIDで前面に表示できます...

NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier:[NSTaskname processIdentifier]];
[app activateWithOptions: NSApplicationActivateAllWindows];

また、特定のアプリケーション、たとえば別のアプリを起動するワークフローをアクティブ化する必要がある場合は、アプリケーションのバンドル識別子を使用してこれを行うことができます。この例では、Safariがアクティブになります。

NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.Safari"];
[(NSRunningApplication*)[apps objectAtIndex:0] activateWithOptions: NSApplicationActivateAllWindows];
于 2013-01-06T14:32:39.113 に答える