0

私のアプリは .deb ファイルを抽出できますが、アプリのボタンで場所を指定した場合に限ります。しかし、.deb ファイルをクリックするだけでアプリを開き、既に持っているアクションを実行し、完了したら終了できるようにしたいと考えています。現在、NSWorspace を使用してアプリに .deb ファイルを開くことができるように指示していますが、そこからアクションを実行する方法がわかりません。NSWorkspace を使用することは正しいことですか? また、開かれているファイルのファイルパスを文字列形式で取得できるようにする必要がありますが、これを理解できないようですか?

4

2 に答える 2

1

私はいくつかのテストを行いましたが、これは他の人にも興味があるかもしれません. 解決策は、小さな例で説明されています。

Xcode で新しい Cocoa プロジェクトを作成し、xib に移動してウィンドウにラベルを追加します。これを概念実証に使用します。次に、アプリのデリゲートにいくつかのものを追加します。インターフェース:

#import <Cocoa/Cocoa.h>

@interface fileClickerAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSTextField *fileName;
}

@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextField *fileName;

@end

実装は非常に簡単です。

#import "fileClickerAppDelegate.h"

@implementation fileClickerAppDelegate

@synthesize window;
@synthesize fileName;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

}

- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames {

    [fileName setStringValue:[NSString stringWithFormat:@"Wow, even multiple files like %d :-)", [filenames count]]];
}

@end

注意すべき方法が 1 つあります。

アプリケーション:openFiles.

それが何をすると思いますか?デスクトップまたはファインダーでアイテムをクリックしたか、ファイルをアイコンにドラッグして渡されたファイルのリストを受け取ります。UNIX スタイルのパスとともに、ファイル名を含む配列が渡されます。

私のテストでは、アプリの plist に「ドキュメント タイプ」を設定する必要も、ファインダーで手の込んだ登録作業を行う必要もありませんでした。もちろん、これは追加できます...

これで問題は解決し、.deb ファイルでやりたいことは何でもできます (debian パッケージだと思いますか?)。

幸運を!

生活

PS: NSTextField を GUI コントロールに接続することを忘れないでください ;-) そうしないと動作しますが、何も表示されません....

于 2012-03-03T23:27:18.037 に答える
0

正確に何をしているのか、そしてクラッシュ ダンプ、gdb 出力など、機能しない理由についてもう少し情報を提供してください。

私が何をしているのか教えてくれなければ、何が助けになるかを推測するのは難しい.

于 2012-02-16T00:53:26.463 に答える