Swift - 如何在 Swift 中获取另一个应用程序的 NSDockTile 对象?

Posted

技术标签:

【中文标题】Swift - 如何在 Swift 中获取另一个应用程序的 NSDockTile 对象?【英文标题】:Swift - How can I get another application's NSDockTile object in Swift? 【发布时间】:2018-04-06 15:30:43 【问题描述】:

如何在 Swift 中获取另一个应用程序的 NSDockTile 对象?

我的想法是我可以获取 NSRunningApplications 数组并从那里访问 NSDockTile,但我只能从 NSApplication 获取 NSDockTile。所以我猜另一个更好的问题是,有没有办法将 NSRunningApplication 转换为 NSApplication 或从另一个应用程序的 BundleIdentifier 或其他东西创建一个 NSApplication 对象?

由于我是 Swift 和 Cocoa 应用程序的新手,我提前为任何愚蠢行为道歉。

【问题讨论】:

【参考方案1】:

我怀疑是否有任何(经批准的)方法可以做到这一点。其他应用程序的 Dock 磁贴属于这些应用程序,考虑到明显的滥用可能性,我无法想象 Apple 会提供一种方法来提供从另一个应用程序访问它的方法的原因。

另外,NSApplicationNSRunningApplication完全不同的对象。两者之间没有任何关系,尝试将一个引用投射到另一个类肯定会以心痛告终。

NSApplication 就所有意图和目的而言,都是您的应用程序。它是正在执行的应用程序的基础,包含运行和控制应用程序、调度事件、建立模式对话框等的方法。

NSRunningApplication 是一个轻量级对象,它提供了一些关于与您的应用程序一起运行的另一个应用程序的有用信息。但它不以任何方式直接连接,也不能控制(除非提供)其他应用程序。

【讨论】:

以上是关于Swift - 如何在 Swift 中获取另一个应用程序的 NSDockTile 对象?的主要内容,如果未能解决你的问题,请参考以下文章