2

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

4

3 回答 3

0

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

-g  Do not bring the application to the foreground.

所以不要NSTask直接启动应用程序;习惯open,错误,打开它。

于 2013-02-13T15:03:21.500 回答
0

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

这将起作用。只需将延迟设置为所需的任何值。

[[NSRunningApplication currentApplication] performSelector:@selector(activateWithOptions:) withObject:[NSNumber numberWithUnsignedInteger:NSApplicationActivateIgnoringOtherApps] afterDelay:5.0];
于 2013-02-13T22:57:43.850 回答
0

我认为您可能不想使用 NSTask,而是使用NSWorkspacelaunchApplicationAtURL:options:configuration:error:. 如果您NSWorkspaceLaunchWithoutAddingToRecents | NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchAndHide作为options:参数传递,它应该实际上是不可见的。(我显然没有在你的特殊情况下尝试过,但这就是它的预期工作方式。)

于 2013-02-13T18:28:04.970 回答