cocoa - 如何访问/嵌入 Finder 功能?

标签 cocoa macos finder

现在 Finder 本身就是 cocoa(假设该应用程序仅在雪豹中运行),是否可以将 Finder 功能嵌入到 cocoa 应用程序中?

我的意思是让一个文件浏览器 Pane 作为应用程序的一部分,实际上浏览文件系统本身(在另一个 Pane 中编辑),但不编写 Finder 的所有功能。谢谢!

最佳答案

Finder 本身只是一个应用程序。它不是一个组件库,也不是一个框架。虽然您无法在应用程序中“嵌入”Finder 功能,但您可以影响 Finder 功能并调用 Finder 功能。

首先,您可以将文件夹操作附加到文件夹。当用户对文件夹的内容执行某些操作时(例如,将文件放入其中),这些将触发。您可以在 Finder 中进行设置。你应该学一点AppleScript ,如果您想要与 Finder 交互。

其次,由于 Finder 支持 AppleEvents,因此您可以使用 AppleScript 影响 Finder。看看My First AppleScriptMy First AppleScript Part II看看如何做到这一点。这里有更深入的信息,在 AppleScript Overview: Scripting with AppleScript 。这是一些More Finder Scripting .

第三,还支持使用 Automator (Mac OS X 10.5) 开发 Finder 的方法,让用户只需单击按钮即可完成复杂的操作。从 Mac OS X 10.6(“Snow Leopard”)开始,您还可以在 Automator 中创建服务。看看Automator and Finder Actions in Mac OS X 10.6了解后一种技术的介绍。

尽管 Finder 窗口本身不是可嵌入组件,但如果您确实想提供书写、打印、删除、复制等文件/文件夹以及从一个文件夹导航到另一个文件夹的功能,您可以开发一个简单的文件夹您的应用程序中的浏览器。

只要您不将网站设置为模仿查找器或复制其所有功能(仅是我提到的基本功能),那么执行此操作应该不会是大量工作。

但是,您需要知道如何对 Macintosh 进行编程 - 不仅仅是使用 AppleScript。通常的方法是学习 Objective-C 编程语言和 Cocoa 框架。您需要熟悉使用模型- View - Controller 架构编写应用程序。

您将创建一个名为 MyFile 之类的 NSObject 子类,以及一个名为 MyFolder 之类的集合类的子类。当应用程序创建浏览窗口时,每次应用程序激活(成为最前面的应用程序)时,您都会刷新浏览菜单的内容。

您可以在菜单栏中放置一个菜单,其中包含命令:打开、打印、删除、复制。当用户执行这些命令之一时,您的应用程序会自行执行适当的操作或将请求发送到 Finder。操作完全执行后,您将刷新当前显示的文件夹的浏览窗口,如果用户导航到不同的文件夹,则刷新新显示的文件夹的浏览窗口。

如果您熟悉设计模式、面向对象编程和一般框架 - 请阅读 Cocoa Design Patterns将极大地加快您的学习曲线。

您可以使用这些不同的技术来利用 Finder 的一些功能。当您仔细查看这些内容时,我建议您非常清楚这会给应用程序的用户带来什么好处。写下此功能的总体目标是什么,以及您希望支持哪些命令,将使您更容易选择开发它的路径。

用户始终可以通过单击按钮来单击 Finder 文件夹窗口,因为 Finder 始终处于运行状态。因此,请避免为了功能本身而简单地重复该功能。专注于您为用户提供的好处。确保您确实处理了用户从另一个应用程序更新您正在显示其内容的文件夹,然后切换回您的应用程序的情况。

关于cocoa - 如何访问/嵌入 Finder 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536893/

相关文章:

objective-c - Cocoa - 在文件末尾添加一些字节

objective-c - 在 Cocoa/Objective-C 中实现项目可视化列表(例如事物)的最佳方法是什么

objective-c - 如何将 NSTimeInterval 对象传递给 detachNewThreadSelector withObject 参数?

macos - 有哪些有用的 TextMate 快捷键?

swift - NetService 无法发布

macos - 通过brew安装后如何在Mac OS上使用Vim 7.4?

CSS - Helvetica Neue Condensed 在 macOS 上无法正确呈现

macos - 使用 AppleScript 移动和合并文件夹和文件(第 2 部分,需要帮助修改)

macos - 如何获取Finder侧边栏收藏夹内容 cocoa ?

objective-c - NSService 未调用其 NSMessage