窗户不断想要在其他人之上 - Xcode

时间:2013-01-06 00:26:55

标签: objective-c xcode cocoa window automator

我的应用程序具有打开自动机工作流程的按钮,如下所示:

- (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 个答案:

答案 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];