[Cocoa] NSWorkspace 使用示例

http://blog.csdn.net/kesalin/article/details/6749107

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

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

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

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

[cpp] view plaincopyprint?

    1. - (IBAction) launchApplication:(id) sender
    2. {
    3. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    4. //BOOL wasLaunched = [workspace launchApplication:@"Safari"];
    5. // launch without activation
    6. //
    7. BOOL wasLaunched = [workspace launchAppWithBundleIdentifier: @"com.apple.Safari"
    8. options: NSWorkspaceLaunchWithoutActivation
    9. additionalEventParamDescriptor: NULL
    10. launchIdentifier: nil];
    11. if ( wasLaunched )
    12. NSLog (@"Safari was launched");
    13. else
    14. NSLog (@"Safari was not launched");
    15. NSArray * apps = [workspace valueForKeyPath:@"launchedApplications.NSApplicationName"];
    16. self.launchedApplications = [NSString stringWithFormat:@"Launched Applications:\n%@", apps];
    17. NSLog(@"Launched Applications:\n%@", apps);
    18. }
    19. - (IBAction) openPdfByDefault:(id) sender
    20. {
    21. NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";
    22. NSURL    * fileURL = [NSURL fileURLWithPath: path];
    23. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    24. [workspace openURL: fileURL];
    25. }
    26. - (IBAction) openPdfBySafari:(id) sender
    27. {
    28. NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";
    29. NSURL    * fileURL = [NSURL fileURLWithPath: path];
    30. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    31. [workspace openFile:[fileURL path] withApplication:@"Safari"];
    32. }
    33. - (IBAction) selectFileInFinder:(id) sender
    34. {
    35. NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";
    36. NSURL    * fileURL = [NSURL fileURLWithPath: path];
    37. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    38. [workspace selectFile:[fileURL path] inFileViewerRootedAtPath:nil];
    39. }
    40. - (IBAction) gatherFileInfo:(id) sender
    41. {
    42. NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";
    43. NSURL    * fileURL = [NSURL fileURLWithPath: path];
    44. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    45. NSString    * appName;
    46. NSString    * fileType;
    47. [workspace getInfoForFile: [fileURL path]
    48. application: &appName
    49. type: &fileType];
    50. BOOL removable = NO;
    51. BOOL writeable = NO;
    52. BOOL unmountable = NO;
    53. NSString *description;
    54. NSString *fileSystemType;
    55. [workspace getFileSystemInfoForPath:[fileURL path]
    56. isRemovable: &removable
    57. isWritable: &writeable
    58. isUnmountable: &unmountable
    59. description: &description
    60. type: &fileSystemType];
    61. self.fileInfo = [NSString stringWithFormat:
    62. @"AppName: %@\ntype: %@"
    63. @"\nremoveable: %d\nwriteable: %d\nunmountable: %d"
    64. @"\ndescription: %@\nfileSystemType: %@",
    65. appName, fileType,
    66. removable, writeable, unmountable,
    67. description, fileSystemType];
    68. NSLog (@" >> gather file info:\n%@", self.fileInfo);
    69. }
    70. - (IBAction) copyFileToDesktop:(id) sender
    71. {
    72. NSString * name  = @"About Xcode and iOS SDK.pdf";
    73. NSArray  * files = [NSArray arrayWithObject: name];
    74. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    75. [workspace performFileOperation: NSWorkspaceCopyOperation
    76. source: @"/Developer/"
    77. destination: @"/Users/tianyouhui/Desktop/"
    78. files: files
    79. tag: 0];
    80. }
    81. - (IBAction) moveFileToTrash:(id) sender
    82. {
    83. NSString * name  = @"About Xcode and iOS SDK.pdf";
    84. NSArray  * files = [NSArray arrayWithObject: name];
    85. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    86. [workspace performFileOperation: NSWorkspaceRecycleOperation
    87. source: @"/Users/tianyouhui/Desktop/"
    88. destination: @""
    89. files: files
    90. tag: 0];
    91. }
    92. - (IBAction) gatherIconOfFile:(id) sender
    93. {
    94. NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";
    95. NSURL    * fileURL = [NSURL fileURLWithPath: path];
    96. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    97. self.icon = [workspace iconForFile: [fileURL path]];
    98. //NSString    * path  = [workspace fullPathForApplication:@"Safari"];
    99. //self.xcodeIcon  = [workspace iconForFile: path];
    100. self.xcodeIcon = [workspace iconForFileType:@"xcodeproj"];
    101. }
    102. - (IBAction) openUrlBySafari:(id) sender
    103. {
    104. NSURL * url = [NSURL URLWithString:@"http://blog.csdn.net/kesalin/"];
    105. NSWorkspace * workspace = [NSWorkspace sharedWorkspace];
    106. [workspace openURL: url];
    107. }
时间: 2024-10-09 03:41:26

[Cocoa] NSWorkspace 使用示例的相关文章

mac 辅助接口

mac 辅助接口1.打开文件所在目录并选中该文件2.获取plist属性值3.系统关机4.打开系统网络设置5.字符串包含比较6.系统挂载数及挂载盘符信息 //====================================================1.打开文件所在目录并选中该文件<1>.cocoa NSWorkspace方式void MacOpenLocateFileInWindow(const char *pChFilePath){    NSAutoreleasePool *p

XCode和Cocoa在开发中使用第三方dylib示例

XCode和Cocoa在开发中使用第三方dylib示例 www.educity.cn   发布者:yukowang   来源:网络转载   发布日期:2014年06月13日 XCode和Cocoa在开发中使用第三方dylib示例是本文要介绍对内容,所谓dylib,就是bsd风格的动态库.基本可以认为等价于windows的dll和linux的so.mac基于bsd,所以也使用的是 dylib. 如果你需要引用一个第三方的dylib,在xcode下编译出cocoa程序,在本机上运行是不会出问题的.但

obj-c编程15[Cocoa实例03]:MVC以及归档化示例

前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在任何语言里都会有,它是一种设计思想,主要可以概括为一个程序由3部分组成: 1 模式:是程序的数据支持: 2 视图:是程序的表示支持: 3 控制:连接模式和视图,将程序构为一个整体: Cocoa框架中对MVC提供了非常好的支持,你只需要写很少的代码就可以完成一个程序的MVC绑定了.下面的例子中,我生成一个基于多文档的程序,使用了NSArrayC

Swift—Cocoa Touch设计模式-备

目标(Target)与动作(Action)是iOS和OS X应用开发的中事件处理机制.   问题提出 如图所示是一个ButtonLabelSample案例设计原型图,其中包含一个标签和一个按钮,当点击按钮的时候,标签文本会从初始的Label替换为HelloWorld. ButtonLabelSample案例首先要解决的问题是:按钮点击事件后有谁负责响应事件?谁进行事件处理?要答这个问题,可以打开ButtonLabelSample案例故事板文件Main.storyboard,如图所示,OK按钮是在

[iOS翻译] Cocoa编码规范

目录: 一.代码命名基础 二.方法 三.函数 四.Property及其他 五.缩写 一.代码命名基础 1.通用原则 1.1 清晰 尽量清晰又简洁,无法两全时清晰更重要 通常不应缩写名称,即使方法名很长也应完整拼写 你可能认为某个缩写众所周知,但其实未必,特别是你周围的开发者语言文化背景不同时 有一些历史悠久的缩写还是可以使用的,详见第五章 API命名避免歧义,例如一个方法名有多种理解 1.2 一致 尽力保持Cocoa编程接口命名一致 如果有疑惑,请浏览当前头文件或者参考文档 当某个类的方法使用了

深入浅出Cocoa之消息

[Cocoa]深入浅出Cocoa之消息 深入浅出Cocoa之消息    罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公用协议 在入门级别的ObjC 教程中,我们常对从C++或Java 或其他面向对象语言转过来的程序员说,ObjC 中的方法调用(ObjC中的术语为消息)跟其他语言中的方法调用差不多,只是形式有些不同而已. 譬如C++ 中的: Bird * aBird = new Bird(); aBird->fly(); 在

Cocoa是什么?

一.什么是Cocoa ①Cocoa的来源 早些年,苹果公司启动了Copland计划,致力于开发出自己的操作系统,可惜后来Copland计划逐渐的失控了,苹果公司最终决定放弃开发,转向从别的公司购买下 一个版本的Mac OS.在经过调查现存的操作系统之后,苹果公司选择了NextSTEP,因为NeXTSTEP很小,苹果1996年收购了Next整个公司.关于Next公司以及这段历史,对乔帮主感兴趣的同学可以google一下. NeXTSTEP(next step)内置许多库和工具,能让程序员以一种优雅

《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式

原创文章,欢迎转载.转载请注明:关东升的博客 Swift错误处理模式,在Swift 1.x和Swift 2.0是不同的两种模式. Swift 1.x代码错误处理模式采用Cocoa框架错误处理模式,到现在Objective-C还沿用这种处理模式,而Swift 2.0之后采用了do-try-catch错误处理模式. 下面的示例代码是从文件中读取字符串到内存中,如果使用Swift 1.x错误处理模式代码如下: import Foundation var err: NSError? //定义可选的NSE

FFmpeg示例程序合集-批量编译脚本

此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player:                  最简单的基于FFmpeg的视频播放器simplest ffmpeg audio player:       最简单的基于FFmpeg的音频播放器simplest ffmpeg pic encoder:        最简单的基于FFmpeg的图像编码器simplest ffmpeg video encoder