class Fzeet::Windows::HTMLElementCollection

Public Instance Methods

get(selector) click to toggle source
# File lib/fzeet/windows/mshtml/Common.rb, line 874
def get(selector)
        v = VARIANT.new

        case selector
        when String
                v[:vt] = VT_BSTR
                v[:bstrVal] = bstr = if selector[0] == '#'
                        Windows.SysAllocString("#{selector[1..-1]}\0".encode('utf-16le'))
                else
                        _tags = true
                        Windows.SysAllocString("#{selector}\0".encode('utf-16le'))
                end
        when Integer
                v[:vt] = VT_I4; v[:intVal] = selector
        else raise ArgumentError
        end

        pdisp = nil

        FFI::MemoryPointer.new(:pointer) { |pdisp|
                (_tags) ? tags(v, pdisp) : item(v, VARIANT.new, pdisp)

                return nil if (pdisp = pdisp.read_pointer).null?

                disp = Dispatch.new(pdisp)

                return disp.QueryInstance((_tags) ? HTMLElementCollection : HTMLElement)
        }
ensure
        Windows.SysFreeString(bstr) if bstr
        pdisp.Release if pdisp && !pdisp.null?
end