【问题标题】:How to make an Invisible / Hidden Cocoa Application如何制作一个不可见/隐藏的 Cocoa 应用程序
【发布时间】:2010-12-17 10:44:52
【问题描述】:

我想开发像http://orbicule.com/undercover/
http://hiddenapp.com/ 这样的应用程序。

我知道如何在 Windows 上做到这一点,但我完全不知道,什么样的
mac os x、cocoa/xcode 需要的方法。

在构建应用程序/后台服务时我应该注意什么
mac os x 没有图形用户界面?

该服务将使用地理位置和 IP 等常用数据将数据发布到网页
有关机器的信息,因此它也应该能够访问互联网。

请引导我走向正确的道路。

【问题讨论】:

    标签: cocoa macos service invisible


    【解决方案1】:

    这很简单。

    转到:

    信息属性列表键参考

    http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Introduction/Introduction.html

    在启动服务键中,您将看到一个名为“LSBackgroundOnly”的键,只需在 Info.plist 中定义它并将其设置为 true。

    <key>LSBackgroundOnly</key>
    <true/>
    

    来自文档:

    LSBackgroundOnly(布尔值 - Mac OS X) 指定此应用程序是否 仅在后台运行。如果这 密钥存在并设置为“1”,启动 服务在 仅背景。您可以使用此密钥 创建不露面的背景 应用程序。你也应该使用这个 如果您的应用程序使用了密钥 连接的更高级别的框架 到窗口服务器,但不是 旨在对用户可见。 后台应用程序必须 编译为 Mach-O 可执行文件。这 选项不适用于 CFM 应用程序。

    您的应用程序将是一个后台应用程序。

    【讨论】:

    • -1 这还不够。如果您的应用程序创建了任何窗口,它们仍然可见。
    • @TarkaDaal,错了。这绰绰有余。 OP特别说“没有GUI”。这意味着不会创建任何窗口。
    • 然而,这会导致 > “无法将 (NSApplication) 的 (colorGridView) 出口连接到 (NSColorPickerGridView):缺少设置器或实例变量;无法将 (NSApplication) 的出口连接 (查看) 到 (NSColorPickerGridView ): 缺少 setter 或实例变量"
    • 就我而言,在 Info.plist 中将 LSBackgroundOnly 设置为 true 就足够了。我能够发现正在运行的应用程序的唯一地方是在活动监视器中,它显示为正在运行的进程。我的应用程序也有一个窗口,但这将保持隐藏状态。使用 Swift 5 和 Xcode 11.6。
    【解决方案2】:

    阅读System Startup Programming Topics。创建一个命令行工具项目,而不是 Cocoa 应用程序或 Cocoa 基于文档的应用程序。要提供与其交互的 GUI,您需要使用单独的应用程序(理想情况下,您不必使用“隐藏”应用程序进行安装,因为您似乎不希望它容易被发现)。

    除了 AppKit (UI) 之外,其余的基本 Cocoa 框架仍然可以通过命令行使用。这意味着您可以像其他方式一样编写应用程序的主要逻辑(非 GUI 部分)。

    【讨论】:

    • 在我作为 SO 用户的 2 年多时间里,我的任何编辑都没有获得批准。所以现在我只是评论。
    • 我发现NSWorkspace.shared.notificationCenter.addObserver 在命令行控制台中运行时永远不会触发 - 我认为需要有一些东西来检查 Cocoa 消息并处理它们。我尝试使用 readLine()while(true) { sleep(50) } 阻止控制台,但没有任何成功
    • 更新:您也可以调用NSApplication().run()
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多