Module: Win32::CaptureIE

Extended by:
Enumerable, Feature
Defined in:
lib/win32/capture_ie.rb,
lib/win32/capture_ie/area.rb,
lib/win32/capture_ie/base.rb,
lib/win32/capture_ie/util.rb,
lib/win32/capture_ie/bitmap.rb,
lib/win32/capture_ie/window.rb,
lib/win32/capture_ie/browser.rb,
lib/win32/capture_ie/feature.rb,
lib/win32/capture_ie/version.rb,
lib/win32/capture_ie/cli/base.rb,
lib/win32/capture_ie/ffi/base.rb,
lib/win32/capture_ie/commands/base.rb,
lib/win32/capture_ie/screen_captor.rb

Overview

Ex)

require "rubygems"
require "win32/capture_ie"

Win32::CaptureIE.start do |ie|
  ie.navigate("http://www.ruby-lang.org/")
  ie.capture_browser("ruby-lang.bmp")
end

ie = Win32::CaptureIE.start
begin
  ie.navigate("http://rubyforge.org/")
  ie.capture_browser("rubyforge.bmp")
ensure
  ie.quit
end

Defined Under Namespace

Modules: CLI, Commands, FFI, Feature, Util, VERSION Classes: Area, BitMap, BitMapSizeError, Browser, ConnectError, ScreenCaptor, Win32APIError, Window

Constant Summary

Constants included from Feature

Feature::DISABLED_FEATURE

Class Method Summary collapse

Methods included from Feature

disable_feature, enable_feature, feature_available?, feature_enable?, load_depended_library, load_feature, raise_if_disabled

Class Method Details

.attach(url, fallback, opts = nil, &block) ⇒ Object



117
118
119
120
121
122
123
124
125
# File 'lib/win32/capture_ie.rb', line 117

def attach(url, fallback, opts=nil, &block)
  url = url.to_s
  ie = each_ie {|ie| break ie if ie.LocationURL == url }
  if ie
    run(wrap(ie), opts, &block)
  else
    fallback.call
  end
end

.connect(url = "about:blank", opts = nil, &block) ⇒ Object

call-seq:

connect(url) -> Win32::CaptureIE::Browser or Win32::CaptureIE::ConnectError
connect(url){|ie| ... }

connect existing IE that displayed specified url. And return/eval Win32::CaptureIE::Browser object.



106
107
108
# File 'lib/win32/capture_ie.rb', line 106

def connect(url="about:blank", opts=nil, &block)
  attach(url, lambda { raise ConnectError, "no such IE `#{url}'" }, opts, &block)
end

.connect_or_start(url = "about:blank", opts = nil, &block) ⇒ Object

call-seq:

connect_or_start(url) -> Win32::CaptureIE::Browser
connect_or_start(url, :no_wait => true) -> Win32::CaptureIE::Browser
connect_or_start(url){|ie| ... }
connect_or_start(url, :no_wait => true){|ie| ... }

connect existing IE or start.



96
97
98
# File 'lib/win32/capture_ie.rb', line 96

def connect_or_start(url="about:blank", opts=nil, &block)
  attach(url, lambda { start(url, opts, &block) }, opts, &block)
end

.create_ie_objectObject



153
154
155
# File 'lib/win32/capture_ie.rb', line 153

def create_ie_object
  WIN32OLE.new("InternetExplorer.Application")
end

.disable_rmagickObject

Do not load/use RMagick even if RMagick is installed.

Win32::CaptureIE.connect_or_start(url) do |b|
  Win32::CaptureIE.disable_rmagick
  b.capture_browser("foo.png") #=> Win32::CaptureIE::Feature::DisabledError
  b.capture_browser("foo.bmp") #=> ok
  Win32::CaptureIE.enable_rmagick
  b.capture_browser("foo.png") #=> ok and load RMagick automatically.
  Win32::CaptureIE.disable_rmagick
  b.capture_browser("foo.png") #=> Win32::CaptureIE::Feature::DisabledError
end


49
50
51
# File 'lib/win32/capture_ie.rb', line 49

def disable_rmagick
  disable_feature("RMagick")
end

.eachObject

Calls block for each IE window, passing Win32::CaptureIE::Browser object to the supplied block.



112
113
114
# File 'lib/win32/capture_ie.rb', line 112

def each
  each_ie {|ie| yield wrap(ie) }
end

.each_ieObject



128
129
130
131
132
133
134
# File 'lib/win32/capture_ie.rb', line 128

def each_ie
  shell = WIN32OLE.new("Shell.Application")
  w = shell.Windows
  w.each do |ie|
    yield ie if ie.FullName =~ /\biexplore\.exe\z/i
  end
end

.enable_rmagickObject

enable RMagick.

see disable_rmagick for more details.



56
57
58
# File 'lib/win32/capture_ie.rb', line 56

def enable_rmagick
  enable_feature("RMagick")
end

.rmagick_available?Boolean

RMagick is installed and enabled?

This method will load RMagick (and rubygems) automatically.

Returns:

  • (Boolean)


70
71
72
# File 'lib/win32/capture_ie.rb', line 70

def rmagick_available?
  feature_available?("RMagick")
end

.rmagick_enable?Boolean

RMagick is enabled?

see disable_rmagick for more details.

Returns:

  • (Boolean)


63
64
65
# File 'lib/win32/capture_ie.rb', line 63

def rmagick_enable?
  feature_enable?("RMagick")
end

.run(ie, opts = nil, &block) ⇒ Object



137
138
139
140
141
142
143
144
145
# File 'lib/win32/capture_ie.rb', line 137

def run(ie, opts=nil, &block)
  opts ||= {}
  return ie unless block
  begin
    block.call(ie)
  ensure
    ie.quit unless opts[:no_quit]
  end
end

.start(url = "about:blank", opts = nil, &block) ⇒ Object

call-seq:

start(url) -> Win32::CaptureIE::Browser
start(url, :no_wait => true) -> Win32::CaptureIE::Browser
start(url){|ie| ... }
start(url, :no_wait => true){|ie| ... }

lanuch IE and return/eval Win32::CaptureIE::Browser object.



81
82
83
84
85
86
87
# File 'lib/win32/capture_ie.rb', line 81

def start(url="about:blank", opts=nil, &block)
  opts ||= {}
  ie = wrap(create_ie_object)
  ie.browser.Visible = true
  ie.navigate(url.to_s, !opts[:no_wait])
  run(ie, opts, &block)
end

.wrap(ie) ⇒ Object



148
149
150
# File 'lib/win32/capture_ie.rb', line 148

def wrap(ie)
  Win32::CaptureIE::Browser.new(ie.HWND, nil, ie)
end