我的应用程序具有打开自动机工作流程的按钮,如下所示:
- (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];
}
唯一的问题是,每一个都出现在我的应用程序窗口后面。此外,一个工作流程启动另一个也出现在窗口后面的应用程序。
我该如何解决这个问题?
答案 0 :(得分: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];