って感じですか。
辞書.appの検索入力をフックできればいいんとちゃいますか。
いくつか方法があると思いますが、まずは、気になっていたRubyInjectで。
machレベルで関数上書きすると。最近はtext segmentが書き込み禁止にされてしまって寂しいですが、それはそれとしてインストールしてみます。
$ xcodebuild SYMROOT=/tmp
$ cp -r /tmp/Release/RubyInject.framework /Library/Frameworks
でもって、Dictionary.app起動してpsとかでプロセスIDを調べて
sudo ruby inject.rb プロセスID
とすると irb が起動して、いろいろできます。
辞書.appの右上のNSTextFieldっぽいところの文字列を引っこ抜ければよいと思うので探してみます。
require 'osx/cocoa'
include OSX
def walk(d)
instance = d[1]
NSLog d[0]
NSLog instance.class.to_s
begin
NSLog instance.stringValue.to_s
rescue
end
NSLog " "
begin
instance.subviews.count.times do |i|
walk [d[0] + ".subviews[#{i}]", instance.subviews[i]]
end
rescue
end
end
NSApp.windows.count.times do |i|
walk ["NSApp.windows[#{i}].contentView", NSApp.windows[i].contentView]
end
環境設定ウィンドウの文字列と同じものを見つけたので、setStringValue したら書き換えることができました!
しかし、右上のNSTextFieldらしきのにはどうも辿り着けない。うーん。