WIN32OLE_EVENTメモ

WIN32OLE_EVENTを使ってExcelのイベントにコールバックを登録する例を作ってみた。

require 'win32ole'

app = WIN32OLE.new('Excel.Application')
app.visible = true
wkb = app.workbooks.add

i = 100
WIN32OLE_EVENT.new(wkb, 'WorkbookEvents').on_event() do |*e|
  i = i - 1
  p(e.map do |a| WIN32OLE === a ? a.ole_obj_help : a end)
end

WIN32OLE_EVENT.message_loop while i > 0

疑問:コールバックを削除する方法がわからなかった。