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

唯一的问题是,每一个都出现在我的应用程序窗口后面。此外,一个工作流程会启动另一个应用程序,该应用程序也出现在窗口后面。

我怎样才能解决这个问题?

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 回答