ScriptingBridge开篇
来源:互联网 发布:淘宝网在家兼职客服 编辑:程序博客网 时间:2024/04/29 15:49
本文只是草稿
一、OSX 开发中的appleScript支持
在OS X开发中,我们可以使用苹果脚本的,主要是由NSAppleScript的支持,例如退出一个程序,我们可以如下代码实现:
NSString* script = [NSString stringWithFormat: @"tell application \"%@\" to quit", appName];NSAppleScript* as = [[[NSAppleScript alloc] initWithSource: script] autorelease];[as executeAndReturnError: nil];
二、Scripting Bridge
Scripting Bridge技术的目的是在javasc,Ruby, Python,以及 Objective-C等语言中向脚本支持的应用发送apple event。
举例子,我们要获取iTunes当前播放的音乐名称
Applescript中,直接在苹果脚本编辑器中写入以下代码,运行即可:
tell application "iTunes" to get the name of the current track
Ruby中可用Scripting Bridge frameworks来查询和控制应用,本例中使用如下代码:
#!/usr/bin/rubyrequire "osx/cocoa"include OSXOSX.require_framework 'ScriptingBridge'iTunes = OSX::SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")puts iTunes.currentTrack.name
Python中和ruby类似:
#!/usr/bin/pythonfrom Foundation import *from ScriptingBridge import *iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")print iTunes.currentTrack().name()
Objective-C中尽管有发送Apple Events的机制,但是新的Scripting Bridge设计可以简化代码:
#import <Foundation/Foundation.h>#import <ScriptingBridge/ScriptingBridge.h>#import "iTunes.h"int main(){iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];NSLog(iTunes.currentTrack.name);}
三、如何生成应用头文件
注意到上面的例子中,我们导入了“iTunes.h”这个头文件,现在我们来生成该文件。
mac:~ mamong$ sudo ln -s /Applications/Xcode5.app/Contents/Developer/usr/bin/sdef /usr/bin/sdefmac:~ mamong$ sudo ln -s /Applications/Xcode5.app/Contents/Developer/usr/bin/sdp /usr/bin/sdpmac:~ mamong$ sdef /Applications/iTunes.app | sdp -fh --basename iTunes
四、iTunes里有什么
简单的观察一下,iTunes 的脚本编程 API 组织是这样的:在 iTunesApplication 下,可以找到多个来源 (iTunesSource),来源有许多种,比如 music library,比如 CD,比如 iPod 等等,而每个来源里,又按照播放列表 (iTunesPlaylist) 来组织,而每个播放列表中,显而易见地有多个曲目 (iTunesTrack),在上面这个例子里,我们要找的第一个来源 (sources()[0]) 的第一个播放列表 (playlists()[0]),正是你的 iTunes Music Library。援引自http://blog.jjgod.org/2007/11/10/python-itunes-scripting/
0 0
- ScriptingBridge开篇
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇!
- 开篇
- 开篇!
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇
- 开篇
- www.packtpub.com电子书网站
- 计算NSString文本内容的高度
- ffmpeg参数中文详细解释
- zoj 2724 Windows Message Queue 优先队列
- MFC笔记 位图背景窗体的实现
- ScriptingBridge开篇
- bfs UVA 12569 - Planning mobile robot on Tree (EASY Version)
- Java语言学习-继承
- R语言 基本数据分析
- Percona Server 安装
- 记录零星的思想,不再为遗忘而纠结
- 【ZJOI2013 DAY1】K大数查询 --树套树水题
- bootstrap后台模板布局
- 手机存储卡坏了怎么修复