Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > WIN32OLE_EVENTクラス > handler=
handler=(obj) -> ()
[permalink][rdoc]イベント処理を実行するオブジェクトを登録します。
イベントハンドラをメソッドとして持つオブジェクトをイベントハンドラとし て登録します。
イベントハンドラはイベント名に「on」を前置します。もし、イベントに対応 するonメソッドが実装されていなければmethod_missingが呼ばれます。イベン ト名は大文字小文字を区別するため、正確な記述が必要です。
class IeHandler def initialize @completed = false end attr_reader :completed def onDocumentComplete(disp, uri) disp.document.getElementsByTagName('a').each do |e| puts "#{e.innerHTML}=#{e.href}" end @completed = true end def method_missing(id, *args) puts "event=#{id.to_s}, args=#{args.inspect}" end end ie = WIN32OLE.new('InternetExplorer.Application.1') event = WIN32OLE_EVENT.new(ie, 'DWebBrowserEvents2') event.handler = IeHandler.new ie.Navigate2 'http://www.ruby-lang.org/ja/' loop do break if event.handler.completed WIN32OLE_EVENT.message_loop end ie.Quit
WIN32OLE_EVENT#on_eventなどの呼び出しでブロックが登録されている場 合、そちらが優先されます。