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
原创粉丝点击