Ruby의 ScriptingBridge를 통해 OS X에서 실행중인 프로세스 목록을 얻으려고합니다.Ruby ScriptingBridge를 통해 "id"선택기에 액세스하는 방법
프로세스 ID를받는 것 외에는 모두 잘 작동합니다. 문제는 Ruby의 내부 Object # id 속성이 SystemEvents.process.id selector 대신 호출된다는 것입니다.
이 내 현재 샘플 코드입니다 :
#!/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 ...]
가 어떻게이 ScriptingBridge가 호출되어 있는지 확인 할 수 없습니다 # ID를 객체?
이 경우, NSWorkspace를 사용할 수 있습니까? 'Object # id'는 Ruby 1.9에서 더 이상 존재하지 않습니다. – steenslag
좀 더 일반적인 해결책을 찾고 있었지만, 아마 하나가 아니기 때문에, 나는 그것을 분명히 시도 할 것입니다. 잠시 후에 파이썬으로 넘어갔습니다 :-) –