从Ruby、PHP或Cocoa访问Mac应用程序
我想从Ruby上访问几个不同的MacOSX应用程序,但我会选择PHP。这些应用程序是Elgato的turbo.264和苹果的iTunes。两者都定义了Applescript库,允许我从Applescript执行我想执行的操作,但我不想在Applescript中执行此操作。如果我不能在Ruby或PHP中实现这一点,也许我可以在objective C/Cocoa中实现,并创建某种可以从Ruby调用的包装器 这可能吗?似乎如果这些方法在Applescript中可用,那么它们应该在其他语言中可用,我只是找不到任何东西 尝试了appscript() 该站点的示例如下: 而不是AppleScript:从Ruby、PHP或Cocoa访问Mac应用程序,php,ruby,cocoa,macos,applescript,Php,Ruby,Cocoa,Macos,Applescript,我想从Ruby上访问几个不同的MacOSX应用程序,但我会选择PHP。这些应用程序是Elgato的turbo.264和苹果的iTunes。两者都定义了Applescript库,允许我从Applescript执行我想执行的操作,但我不想在Applescript中执行此操作。如果我不能在Ruby或PHP中实现这一点,也许我可以在objective C/Cocoa中实现,并创建某种可以从Ruby调用的包装器 这可能吗?似乎如果这些方法在Applescript中可用,那么它们应该在其他语言中可用,我只是
tell application "TextEdit"
get paragraph 1 of document "ReadMe"
end tell
你在Ruby中写:
app('TextEdit').documents['ReadMe'].paragraphs[1].get
尝试RubyOSA(),然后可以执行以下操作:
require 'rbosa'
itunes = OSA.app('iTunes')
track = itunes.current_track
p track # <OSA::Itunes::FileTrack:0x1495e20>
p track.name # "Over The Rainbow"
p track.artist # "Keith Jarrett"
p track.duration # 362.368988037109
p track.date_added.to_s # "2006-06-30"
p track.enabled? # true
# Play the selected track.
itunes.play
# Fade the volume.
100.times { |i| itunes.sound_volume = i; sleep 0.1 }
# Set iChat's status message to the current track.
OSA.app('iChat').status_message = "Playing: #{track.name}"
需要“rbosa”
itunes=OSA.app(“itunes”)
曲目=itunes.current\u曲目
p轨道#
p track.name#“越过彩虹”
p track.artist#“Keith Jarrett”
p轨道持续时间#362.368988037109
p track.date添加到“2006-06-30”
p轨道已启用?#真的
#播放所选曲目。
itunes.play
#淡入音量。
100.1倍{i| itunes.sound|u volume=i;睡眠0.1}
#将iChat的状态消息设置为当前曲目。
OSA.app('iChat').status_message=“播放:{track.name}”
您可以与任何支持AppleScript的Mac OS X应用程序进行对话。Mac OS X 10.5(当前版本)包括,该框架允许您从Cocoa应用程序访问AppleScript功能。你也可以。基本上,它是这样工作的:
require 'osx/cocoa'
require_framework 'ScriptingBridge'
include OSX
iTunes = SBApplication.applicationWithBundleIdentifier 'com.apple.iTunes'
iTunes.activate
puts "Play #{iTunes.currentTrack.name}?"
iTunes.playpause if gets.strip == "Yes"
我很好奇为什么这个答案获得了3张赞成票,而RubyOSA只获得了一张。答案似乎非常相似,只是推荐了一个不同的工具-rb applescript有什么内在的更好的地方吗?我认为基本上,这个答案排在第一位,它们或多或少是相等的。如果几个答案相等,人们通常只会选择一个作为代表。我个人从来没有发现Appscript和RubyOSA之间有很大的区别。