1require 'win32ole'
2
3class IEHandler
4  attr_reader :loop
5  def initialize
6    @urls = []
7    @loop = true
8  end
9  def method_missing(event, *args)
10    case event
11    when "BeforeNavigate2"
12      puts "Now Navigate #{args[1]}..."
13    end
14  end
15  def onNavigateComplete2(pdisp, url)
16    @urls << url
17  end
18  def onOnQuit
19    puts "Now Stop IE..."
20    @loop = false
21  end
22  def put_urls
23    puts "You Navigated the URLs ..."
24    @urls.each_with_index do |url, i|
25      puts "(#{i+1}) #{url}"
26    end
27  end
28end
29
30ie = WIN32OLE.new('InternetExplorer.Application')
31ie.visible = true
32ie.gohome
33
34ev = WIN32OLE_EVENT.new(ie)
35ev.handler = IEHandler.new
36
37while (ev.handler.loop)
38  WIN32OLE_EVENT.message_loop
39end
40ev.handler.put_urls
41