NSTask应用程序失去了重点

时间:2013-02-13 14:58:02

标签: objective-c cocoa nstask

我正在使用NSTask来启动外部应用。但此时,我的应用程序失去了焦点。我不想要这个。另一个应用程序只是在文件中写入一些信息,我的应用程序读取并显示这些信息。是否有可能在后台启动NSTask应用程序?

3 个答案:

答案 0 :(得分:0)

如果您使用open命令(manpage)启动应用,则可以尝试使用-g选项以避免将应用置于前台:

-g  Do not bring the application to the foreground.

所以不要让NSTask直接启动应用;使用open,错误,打开它。

答案 1 :(得分:0)

我认为您可能不想使用NSTask,而是使用NSWorkspacelaunchApplicationAtURL:options:configuration:error:。如果您将NSWorkspaceLaunchWithoutAddingToRecents | NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchAndHide作为options:参数传递,则它应该是实际上不可见的。 (我显然没有尝试过你的具体案例,但这就是它的工作方式。)

答案 2 :(得分:0)

为什么不在启动NSTask后调用“performSelector:withObject:afterDelay”?使用此功能后,您可以在适当的延迟后调用重新激活应用程序的选择器。你不需要任何花哨的东西,只需让其他应用程序出现在前面,然后重新激活你自己的应用程序。

这会奏效。只需将延迟设置为所需的任何内容即可。

[[NSRunningApplication currentApplication] performSelector:@selector(activateWithOptions:) withObject:[NSNumber numberWithUnsignedInteger:NSApplicationActivateIgnoringOtherApps] afterDelay:5.0];