【发布时间】:2012-07-19 08:36:31
【问题描述】:
我在 Mac 应用程序中编写了一个 Cocoa 服务。当我在另一个应用程序中并触发服务时,即使服务代码完全为空:
- (void)doMyService:(NSPasteboard*)pasteboard
userData:(NSString*)userData
error:(NSString**)error {
}
...该应用程序的窗口已停用,而我的窗口已提前。即使我的应用程序设置为在无停靠模式下运行 (LSUIElement = false),也是如此。即使我的应用程序没有自己的窗口,前台应用程序的窗口也会被停用!
我尝试在服务处理程序中停用我的应用程序;没运气。从服务处理程序中隐藏我的应用程序似乎有效,但前提是用户使用上下文菜单触发服务,而不是组合键,并且仅当我们没有在无坞模式下运行(我希望我的应用程序是无坞的) .
如何防止前台应用停用,或者至少能够重新激活它?
【问题讨论】:
-
在您的服务的 plist 文件中将“应用程序仅在后台”设置为是。
-
你们的服务是做什么的?它完成任务后会退出吗?
-
@parag 感谢您的建议,但它似乎没有效果。
-
@RobKeniger 它正在获取服务抓取的文本并将其发送到 Web api。我不希望它每次都退出,因为我们还有一个我想保留的状态栏图标/菜单。在正常操作中,只需一个 Growl 通知就足够了;我根本不需要我的应用程序。有时我可能需要弹出一个窗口,以便用户可以登录到 web api,但即便如此,我也希望能够在窗口关闭后返回到以前的应用程序。