OSX:" Window Server:将前端应用程序设置为My App"

时间:2014-04-29 05:45:02

标签: objective-c macos cocoa launch-agent window-server

我使用以下命令从安装后脚本启动launchAgent

su -l $LOGGED_IN_USER -c "/bin/launchctl load /Library/LaunchAgents/com.myApp.mac.agent.plist"

代理显示状态项(NSStatusItem),其中包含几个菜单选项。其中一个有一个设置选项。点击此按钮会打开NSWindow,只有NSTextField秒。有时,虽然这个窗口是最顶层的,但无论我输入什么内容都会转到底层应用程序。我无法在文本字段中输入任何内容。每当发生这种情况时,我会注意到控制台中的以下日志:

WindowServer[97]: [cps/setfront] Failed setting the front application to MyApp, psn 0x0-0xb20b2, securitySessionID=0x186c5, err=-600

这不是一致的行为。知道为什么这个日志来了吗?这有什么工作吗?是否可以使用su -l启动代理?

1 个答案:

答案 0 :(得分:1)

我不知道完全为什么您会收到该错误和行为。我建议阅读Technical Note TN2083: Daemons and Agents。它详细解释了流程执行上下文的各个方面以及它如何影响流程可以执行的操作。这包括进程是否可以连接到Window Server。

对于它的价值,错误-600是procNotFound,其描述是"没有符合指定描述符的合格进程"。似乎Window Server无法在给定的安全会话中找到具有给定进程序列号(PSN)的进程。

我不会在-l命令中使用sudo。用户的登录脚本可以执行各种疯狂的操作,而不是安装程序完成的操作。但是,我不相信这与主要问题有关。