zoukankan      html  css  js  c++  java
  • [Cocoa]NSWorkspace使用示例

    NSWorkspace使用示例

    罗朝辉 (http://www.cnblogs.com/kesalin/)

    本文遵循“署名-非商业用途-保持一致”创作公用协议


    NSWorkspace 为应用程序提供如下服务:

    1)打开,操作文件/设备,获取文件/设备信息
    2)跟踪文件,设备以及数据库的变动
    3)设置或获取文件的 Finder 信息
    4)启动应用程序。


    NSWorkspace 是个 Singleton 类,我们通过 sharedWorkspace 来访问它。比如下面的语句用 TextEdit 打开指定的文件:
    [[NSWorkspace sharedWorkspace] openFile:@"/Myfiles/README" withApplication:@"TextEdit"];

    下面的代码演示了大部分 workspace 的应用,运行效果图如下:

    下面来看代码,代码都很简单的:

    - (IBAction) launchApplication:(id) sender
    {
    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    //BOOL wasLaunched = [workspace launchApplication:@"Safari"];

    // launch without activation
    //
    BOOL wasLaunched = [workspace launchAppWithBundleIdentifier: @"com.apple.Safari"
    options: NSWorkspaceLaunchWithoutActivation
    additionalEventParamDescriptor: NULL
    launchIdentifier: nil];
    if ( wasLaunched )
    NSLog (@"Safari was launched");
    else
    NSLog (@"Safari was not launched");

    NSArray * apps = [workspace valueForKeyPath:@"launchedApplications.NSApplicationName"];
    self.launchedApplications = [NSString stringWithFormat:@"Launched Applications:\n%@", apps];
    NSLog(@"Launched Applications:\n%@", apps);
    }

    - (IBAction) openPdfByDefault:(id) sender
    {
    NSString * path = @"/Developer/About Xcode and iOS SDK.pdf";
    NSURL * fileURL = [NSURL fileURLWithPath: path];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    [workspace openURL: fileURL];
    }

    - (IBAction) openPdfBySafari:(id) sender
    {
    NSString * path = @"/Developer/About Xcode and iOS SDK.pdf";
    NSURL * fileURL = [NSURL fileURLWithPath: path];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    [workspace openFile:[fileURL path] withApplication:@"Safari"];
    }

    - (IBAction) selectFileInFinder:(id) sender
    {
    NSString * path = @"/Developer/About Xcode and iOS SDK.pdf";
    NSURL * fileURL = [NSURL fileURLWithPath: path];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    [workspace selectFile:[fileURL path] inFileViewerRootedAtPath:nil];
    }

    - (IBAction) gatherFileInfo:(id) sender
    {
    NSString * path = @"/Developer/About Xcode and iOS SDK.pdf";
    NSURL * fileURL = [NSURL fileURLWithPath: path];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

    NSString * appName;
    NSString * fileType;

    [workspace getInfoForFile: [fileURL path]
    application: &appName
    type: &fileType];

    BOOL removable = NO;
    BOOL writeable = NO;
    BOOL unmountable = NO;
    NSString *description;
    NSString *fileSystemType;

    [workspace getFileSystemInfoForPath:[fileURL path]
    isRemovable: &removable
    isWritable: &writeable
    isUnmountable: &unmountable
    description: &description
    type: &fileSystemType];

    self.fileInfo = [NSString stringWithFormat:
    @"AppName: %@\ntype: %@"
    @"\nremoveable: %d\nwriteable: %d\nunmountable: %d"
    @"\ndescription: %@\nfileSystemType: %@",
    appName, fileType,
    removable, writeable, unmountable,
    description, fileSystemType];
    NSLog (@" >> gather file info:\n%@", self.fileInfo);
    }

    - (IBAction) copyFileToDesktop:(id) sender
    {
    NSString * name = @"About Xcode and iOS SDK.pdf";
    NSArray * files = [NSArray arrayWithObject: name];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

    [workspace performFileOperation: NSWorkspaceCopyOperation
    source: @"/Developer/"
    destination: @"/Users/tianyouhui/Desktop/"
    files: files
    tag: 0];
    }

    - (IBAction) moveFileToTrash:(id) sender
    {
    NSString * name = @"About Xcode and iOS SDK.pdf";
    NSArray * files = [NSArray arrayWithObject: name];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

    [workspace performFileOperation: NSWorkspaceRecycleOperation
    source: @"/Users/tianyouhui/Desktop/"
    destination: @""
    files: files
    tag: 0];
    }

    - (IBAction) gatherIconOfFile:(id) sender
    {
    NSString * path = @"/Developer/About Xcode and iOS SDK.pdf";
    NSURL * fileURL = [NSURL fileURLWithPath: path];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

    self.icon = [workspace iconForFile: [fileURL path]];
    //NSString * path = [workspace fullPathForApplication:@"Safari"];
    //self.xcodeIcon = [workspace iconForFile: path];

    self.xcodeIcon = [workspace iconForFileType:@"xcodeproj"];
    }

    - (IBAction) openUrlBySafari:(id) sender
    {
    NSURL * url = [NSURL URLWithString:@"http://blog.csdn.net/kesalin/"];

    NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

    [workspace openURL: url];
    }



  • 相关阅读:
    Docker Warning : the backing xfs filesystem is formatted without d_type support
    docker 版本变化及说明
    CORS 跨域请求
    nginx 用户登录认证
    PipelineDB On Kafka
    Postgres 主从配置(五)
    exec() has been disabled for security reasons
    invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
    未连接到互联网
    github管理代码
  • 原文地址:https://www.cnblogs.com/kesalin/p/nsworkspace.html
Copyright © 2011-2022 走看看