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