我正在使用 NSTask 启动外部应用程序。但此时,我的应用失去了焦点。我不想要这个。另一个应用程序只是在文件中写入一些信息,而我的应用程序读取并显示这些信息。是否可以在后台启动 NSTask 应用程序?
问问题
354 次
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,而是使用NSWorkspace的launchApplicationAtURL:options:configuration:error:
. 如果您NSWorkspaceLaunchWithoutAddingToRecents | NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchAndHide
作为options:
参数传递,它应该实际上是不可见的。(我显然没有在你的特殊情况下尝试过,但这就是它的预期工作方式。)
于 2013-02-13T18:28:04.970 回答