Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > WIN32OLE_EVENTクラス > on_event

instance method WIN32OLE_EVENT#on_event

on_event(event = nil) {|*args| ... } -> ()[permalink][rdoc]

イベント通知を受けるブロックを登録します。

引数にはイベントのメソッド名を指定します。引数を省略した場合は、すべて のイベントを対象とするブロックの登録となります。

[PARAM] event:
イベント名を文字列で指定します。イベント名は大文字小文字を 区別します。省略時にはすべてのイベントが対象となります。
[PARAM] args:
サーバがイベント通知時に指定した引数です。 eventパラメータを省略した場合、第1引数にはイベントのメソッ ド名が文字列で与えられます。引数の変更が必要な場合は、 WIN32OLE_EVENT#on_event_with_outargsを利用してください。
[EXCEPTION] WIN32OLERuntimeError:
WIN32OLE_EVENT#unadviseによってイベン トソースと切断済みです。
ie = WIN32OLE.new('InternetExplorer.Application')
ev = WIN32OLE_EVENT.new(ie, 'DWebBrowserEvents2')
ev.on_event("NavigateComplete2") do |browser, url|
  puts url
end

同じオブジェクトに対してeventパラメータを指定したブロックと指定しないブ ロックが混在している場合、通知されたイベントに対応するブロックがあれば そちらだけが呼び出されます。

ie = WIN32OLE.new('InternetExplorer.Application')
ev = WIN32OLE_EVENT.new(ie, 'DWebBrowserEvents2')
ev.on_event("NavigateComplete2") do |browser, url|
  puts url
end
ev.on_event do |*args|   # <- NavigateComplete2イベント時は実行されない
  puts args[0]
end
...

当メソッドはイベント名の大文字小文字を区別するほか、イベント名の存在確 認を行いません。このため、誤ったイベント名を記述してもエラーとはならず、 単にイベントを受け取れなくなります。