0

OS Xアプリケーションの作成とサービスの登録(つまり、Finderのファイルの右クリックメニューオプション)に進みましたが、右クリックしたときにOSが判読可能なファイルパスをアプリに送信していないように見えることを除いて、すべてが機能しますFinder でファイルを開き、「MyProgram で開く」カスタム オプションを選択します。

私の受信ハンドラー:

- (void)doSomething:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {
NSString *pboardString = [pboard stringForType:NSStringPboardType];
NSLog(@"I hope the file path is: %@", pboardString);
}

上記のコードでは、pboardString には実際には「file:///.file/id=6562758.3327676」のような奇妙なものが含まれます。

これはがらくたかもしれませんし、何か役に立つものに変換できるかもしれません。知らない。ペーストボード オブジェクトを配列として印刷しようとすると、 <NSPasteboardItem: 0x103b37d90> のような 16 進数の結果が得られます。

これがサービス プロパティの問題かどうかはわかりません ( https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/SysServices/Articles/properties.html )。行方不明です。ご指導いただければ幸いです。

4

1 に答える 1

1

NSPasteboardの propertyListForTypeを見ると、ファイル パスにアクセスできます。

そして NSFilenamesPboardType を使用します

- (void)doSomething:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {

    NSArray *files = [pboard propertyListForType:NSFilenamesPboardType];
    NSLog(@"I hope the file path is files: %@", files);

}

上記でリンクしたドキュメントを読む必要があります

于 2013-09-21T19:03:02.583 に答える