使用服务向Finder添加上下文子菜单

时间:2013-10-10 19:18:23

标签: xcode macos contextmenu finder

我想在Finder的上下文菜单中创建子菜单。我有一个使用Services API的小型原型应用程序......

#import "servicesAppDelegate.h"

@implementation servicesAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
  [NSApp setServicesProvider:self];
  NSUpdateDynamicServices();
}

- (void)handleServices:(NSPasteboard *)pboard
              userData:(NSString *)userData 
                 error:(NSString **)error
{
    if([[pboard types] containsObject:NSFilenamesPboardType])
    {
      NSArray* fileArray=[pboard propertyListForType:NSFilenamesPboardType];
      NSLog(@"fileArray:%@",fileArray);
    }
}

@end

我们还有一个services-Info.plist文件......

    <key>NSServices</key>
<array>
    <dict>
        <key>NSMenuItem</key>
        <dict>
            <key>default</key>
            <string>OpenDrive </string>
        </dict>
        <key>NSMessage</key>
        <string>handleServices</string>
        <key>NSPortName</key>
        <string>services</string>
        <key>NSSendTypes</key>
        <array>
            <string>NSFilenamesPboardType</string>
        </array>
    </dict>
</array>

右键单击文件时,我们可以将单个菜单项添加到Finder的上下文菜单中。有没有人知道为这个菜单项添加子菜单的方法?我无法通过修改plist文件来完成它。必须以某种方式使用Services API以编程方式完成...但我不确定是否支持这一点。我查看了“服务实施指南”,但解决方案对我来说并不明显。该指南讨论了向应用程序添加服务。但是我想使用服务来更改Finder的行为,这不是我的应用程序..对此的任何指导都将非常感谢..谢谢。

0 个答案:

没有答案