class Fzeet::Windows::HTMLDocument2

Attributes

handlers[R]

Public Instance Methods

all() click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 221
def all
        pdisp = nil

        FFI::MemoryPointer.new(:pointer) { |pdisp|
                get_all(pdisp)

                disp = Dispatch.new(pdisp.read_pointer)

                return disp.QueryInstance(HTMLElementCollection)
        }
ensure
        pdisp.Release if pdisp
end
createElement(tag) click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 237
def createElement(tag)
        bstr = nil

        FFI::MemoryPointer.new(:pointer) { |pelem|
                old_createElement(bstr = Windows.SysAllocString("#{tag}\0".encode('utf-16le')), pelem)

                return HTMLElement.new(pelem.read_pointer)
        }
ensure
        Windows.SysFreeString(bstr)
end
Also aliased as: old_createElement
old_createElement(tag)
Alias for: createElement
on(event, &block) click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 134
def on(event, &block)
        _event, _block = if event == :ready
                [:readystatechange, -> *args { next unless readyState == 'complete'; block.(*args) }]
        else
                [event, block]
        end

        ((@handlers ||= {})[_event] ||= []) << _block
        @dcallbacks ||= []

        send("put_on#{_event}", VARIANT.new.tap { |v|
                v[:vt] = VT_DISPATCH

                v[:pdispVal] = @dcallbacks.push(DCallback.new.tap { |dcb|
                        dcb.instance_variable_set(:@document, self)
                        dcb.instance_variable_set(:@event, _event)

                        def dcb.Invoke(*args)
                                @document.handlers[@event].each { |handler|
                                        (handler.arity == 0) ? handler.call : handler.call(*args)
                                }

                                S_OK
                        end
                }).last
        }) unless @handlers[_event].length > 1

        self
end
parentWindow() click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 164
def parentWindow
        FFI::MemoryPointer.new(:pointer) { |pwindow|
                get_parentWindow(pwindow)

                return HTMLWindow2.new(pwindow.read_pointer)
        }
end
Also aliased as: window
readyState() click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 213
def readyState
        FFI::MemoryPointer.new(:pointer) { |pstate|
                get_readyState(pstate)

                return Windows.WCSTOMBS(pstate.read_pointer)
        }
end
request() click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 177
def request
        disp = nil

        window.QueryInstance(HTMLWindow5) { |htmlwindow5|
                disp = Dispatch.new(VARIANT.new.tap { |v| htmlwindow5.get_XMLHttpRequest(v) }[:pdispVal])

                disp.QueryInstance(HTMLXMLHttpRequestFactory) { |factory|
                        FFI::MemoryPointer.new(:pointer) { |prequest|
                                factory.create(prequest)

                                return HTMLXMLHttpRequest.new(prequest.read_pointer)
                        }
                }
        }
ensure
        disp.Release if disp
end
request=(enabled) click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 175
def request=(enabled) Windows.DetonateHresult(:CoInternetSetFeatureEnabled, FEATURE_XMLHTTP, SET_FEATURE_ON_PROCESS, (enabled) ? 1 : 0) end
request?() click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 174
def request?; Windows.CoInternetIsFeatureEnabled(FEATURE_XMLHTTP, GET_FEATURE_FROM_PROCESS) == S_OK end
window()
Alias for: parentWindow
xrequest() click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 195
def xrequest
        disp = nil

        window.QueryInstance(HTMLWindow6) { |htmlwindow6|
                disp = Dispatch.new(VARIANT.new.tap { |v| htmlwindow6.get_XDomainRequest(v) }[:pdispVal])

                disp.QueryInstance(HTMLXDomainRequestFactory) { |factory|
                        FFI::MemoryPointer.new(:pointer) { |pxrequest|
                                factory.create(pxrequest)

                                return HTMLXDomainRequest.new(pxrequest.read_pointer)
                        }
                }
        }
ensure
        disp.Release if disp
end