【发布时间】:2012-02-24 11:45:53
【问题描述】:
每当我右键单击文件或文件夹时,我想在 Finder 的上下文菜单中添加一个项目,并且此菜单链接到我的 Cocoa 应用程序的方法。
我正在关注 CocoaDev 的示例和 Apple 的文档,但无法显示该服务。
这是我的 .h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate,NSObject>
@property (assign) IBOutlet NSWindow *window;
-(void)IClicked:(NSPasteboard *)pboard
userData:(NSString *)data
error:(NSString **)error;
@end
.m
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSApp setServicesProvider:self];
}
- (void)IClicked:(NSPasteboard *)pboard userData:(NSString *)data error:(NSString **)error
{
NSLog(@"I clicked");
}
@end
以及我的 Application-plist.info 的摘录:
<key>NSServices</key>
<array>
<dict>
<key>NSKeyEquivalent</key>
<dict>
<key>default</key>
<string>E</string>
</dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>My Application</string>
</dict>
<key>NSMessage</key>
<string>IClicked</string>
<key>NSPortName</key>
<string>TestService</string>
<key>NSSendFileTypes</key>
<array>
<string>public.item</string>
</array>
<key>NSSendTypes</key>
<array>
<string>NSPasteboardTypeString</string>
</array>
<key>NSRequiredContext</key>
<dict>
<key>NSServiceCategory</key>
<string>public.item</string>
</dict>
<key>NSReturnTypes</key>
<array>
<string>NSPasteboardTypeString</string>
</array>
</dict>
</array>
</dict>
我将代码上传到http://www.petits-suisses.ch/TestService.zip。
我做错了什么,或者我可以下载任何可用的 Cocoa 代码来了解我做错了什么?
谢谢!
【问题讨论】:
-
你忘了包含实际的项目包
-
确实,对不起。我现在已经更新了 zip 文件。
-
您能否提供您的工作解决方案,因为旧链接不起作用。谢谢。
标签: macos cocoa service contextmenu finder