Ruby の ScriptingBridge を使用して、OS X で実行中のプロセスのリストを取得しようとしています。
プロセス ID の取得を除いて、すべて正常に動作します。問題は、SystemEvents.process.id セレクターではなく、Ruby の内部 Object#id プロパティが呼び出されることです。
これは私の現在のサンプルコードです:
#!/usr/bin/env ruby
# Lists all active processes
require 'osx/cocoa'
include OSX
OSX.require_framework 'ScriptingBridge'
app = SBApplication.applicationWithBundleIdentifier_("com.apple.SystemEvents")
procs = app.processes
procs.each do |x|
puts "Process No. #{x.id}: #{x.name}"
end
これは、その出力 (の一部) です。
merlin:mw ~/> /Users/mw/Projekte/Ruby/winlist.rb
/Users/mw/Projekte/Python/winlist.rb:13: warning: Object#id will be deprecated; use Object#object_id
Process No. 2275604960: loginwindow
/Users/mw/Projekte/Python/winlist.rb:13: warning: Object#id will be deprecated; use Object#object_id
Process No. 2275603460: talagent
/Users/mw/Projekte/Python/winlist.rb:13: warning: Object#id will be deprecated; use Object#object_id
Process No. 2275600720: Dock
[... snipped list of all my processes ...]
Object#id ではなく、ScriptingBridge が呼び出されていることを確認するにはどうすればよいですか?