module WindowsCOM

Constants

CC_CDECL
CC_FASTCALL
CC_FPFASTCALL
CC_MACPASCAL
CC_MAX
CC_MPWCDECL
CC_MPWPASCAL
CC_MSCPASCAL
CC_PASCAL
CC_STDCALL
CC_SYSCALL
CLSCTX_ACTIVATE_32_BIT_SERVER
CLSCTX_ACTIVATE_64_BIT_SERVER
CLSCTX_ALL
CLSCTX_DISABLE_AAA
CLSCTX_ENABLE_AAA
CLSCTX_ENABLE_CLOAKING
CLSCTX_ENABLE_CODE_DOWNLOAD
CLSCTX_FROM_DEFAULT_CONTEXT
CLSCTX_INPROC
CLSCTX_INPROC_HANDLER
CLSCTX_INPROC_HANDLER16
CLSCTX_INPROC_SERVER
CLSCTX_INPROC_SERVER16
CLSCTX_LOCAL_SERVER
CLSCTX_NO_CODE_DOWNLOAD
CLSCTX_NO_CUSTOM_MARSHAL
CLSCTX_NO_FAILURE_LOG
CLSCTX_PS_DLL
CLSCTX_REMOTE_SERVER
CLSCTX_RESERVED1
CLSCTX_RESERVED2
CLSCTX_RESERVED3
CLSCTX_RESERVED4
CLSCTX_RESERVED5
CLSCTX_SERVER
DISPATCH_METHOD
DISPATCH_PROPERTYGET
DISPATCH_PROPERTYPUT
DISPATCH_PROPERTYPUTREF
ERROR_CANCELLED
E_ABORT
E_ACCESSDENIED
E_FAIL
E_HANDLE
E_INVALIDARG
E_NOINTERFACE
E_NOTIMPL
E_OUTOFMEMORY
E_PENDING
E_POINTER
E_UNEXPECTED
FACILITY_WIN32
IConnectionPoint
IConnectionPointContainer
IDispatch
IObjectWithSite
IOleClientSite
IOleInPlaceObject
IOleInPlaceSite
IOleObject
IOleWindow
IUnknown
OLECLOSE_NOSAVE
OLECLOSE_PROMPTSAVE
OLECLOSE_SAVEIFDIRTY
OLEGETMONIKER_FORCEASSIGN
OLEGETMONIKER_ONLYIFTHERE
OLEGETMONIKER_TEMPFORUSER
OLEGETMONIKER_UNASSIGN
OLEIVERB_DISCARDUNDOSTATE
OLEIVERB_HIDE
OLEIVERB_INPLACEACTIVATE
OLEIVERB_OPEN
OLEIVERB_PRIMARY
OLEIVERB_SHOW
OLEIVERB_UIACTIVATE
OLEMISC_ACTIVATEWHENVISIBLE
OLEMISC_ACTSLIKEBUTTON
OLEMISC_ACTSLIKELABEL
OLEMISC_ALIGNABLE
OLEMISC_ALWAYSRUN
OLEMISC_CANLINKBYOLE1
OLEMISC_CANTLINKINSIDE
OLEMISC_IGNOREACTIVATEWHENVISIBLE
OLEMISC_IMEMODE
OLEMISC_INSERTNOTREPLACE
OLEMISC_INSIDEOUT
OLEMISC_INVISIBLEATRUNTIME
OLEMISC_ISLINKOBJECT
OLEMISC_NOUIACTIVATE
OLEMISC_ONLYICONIC
OLEMISC_RECOMPOSEONRESIZE
OLEMISC_RENDERINGISDEVICEINDEPENDENT
OLEMISC_SETCLIENTSITEFIRST
OLEMISC_SIMPLEFRAME
OLEMISC_STATIC
OLEMISC_SUPPORTSMULTILEVELUNDO
OLEMISC_WANTSTOMENUMERGE
OLEWHICHMK_CONTAINER
OLEWHICHMK_OBJFULL
OLEWHICHMK_OBJREL
S_FALSE
S_OK
USERCLASSTYPE_APPNAME
USERCLASSTYPE_FULL
USERCLASSTYPE_SHORT
VT_ARRAY
VT_BLOB
VT_BLOB_OBJECT
VT_BOOL
VT_BSTR
VT_BYREF
VT_CARRAY
VT_CF
VT_CLSID
VT_CY
VT_DATE
VT_DECIMAL
VT_DISPATCH
VT_EMPTY
VT_ERROR
VT_FILETIME
VT_HRESULT
VT_I1
VT_I2
VT_I4
VT_I8
VT_ILLEGAL
VT_ILLEGALMASKED
VT_INT
VT_LPSTR
VT_LPWSTR
VT_NULL
VT_PTR
VT_R4
VT_R8
VT_RESERVED
VT_SAFEARRAY
VT_STORAGE
VT_STORED_OBJECT
VT_STREAM
VT_STREAMED_OBJECT
VT_TYPEMASK
VT_UI1
VT_UI2
VT_UI4
VT_UI8
VT_UINT
VT_UNKNOWN
VT_USERDEFINED
VT_VARIANT
VT_VECTOR
VT_VOID

Public Class Methods

DetonateHresult(name, *args) { |hresult| ... } click to toggle source
# File lib/windows_com/common.rb, line 21
def DetonateHresult(name, *args)
        hresult = __send__(name, *args)
        failed = FAILED(hresult)

        raise "#{name} failed (hresult: #{format('%#08x', hresult)})" if failed

        hresult
ensure
        yield hresult if failed && block_given?
end
FAILED(hr) click to toggle source
# File lib/windows_com/common.rb, line 99
def FAILED(hr)
        hr < 0
end
HRESULT_FROM_WIN32(x) click to toggle source
# File lib/windows_com/common.rb, line 103
def HRESULT_FROM_WIN32(x)
        (x <= 0) ?
                x :
                (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000
end
InitializeOle() click to toggle source
# File lib/windows_com/ole.rb, line 14
def InitializeOle
        DetonateHresult(:OleInitialize, nil)

        STDERR.puts "OLE initialized" if $DEBUG

        at_exit {
                OleUninitialize()

                STDERR.puts "OLE uninitialized" if $DEBUG
        }
end
SUCCEEDED(hr) click to toggle source
# File lib/windows_com/common.rb, line 95
def SUCCEEDED(hr)
        hr >= 0
end
UsingCOMObjects(*objs) { |*objs| ... } click to toggle source
# File lib/windows_com/common.rb, line 13
def UsingCOMObjects(*objs)
        yield(*objs)
ensure
        objs.each { |obj|
                obj.Release
        }
end

Private Instance Methods

DetonateHresult(name, *args) { |hresult| ... } click to toggle source
# File lib/windows_com/common.rb, line 21
def DetonateHresult(name, *args)
        hresult = __send__(name, *args)
        failed = FAILED(hresult)

        raise "#{name} failed (hresult: #{format('%#08x', hresult)})" if failed

        hresult
ensure
        yield hresult if failed && block_given?
end
FAILED(hr) click to toggle source
# File lib/windows_com/common.rb, line 99
def FAILED(hr)
        hr < 0
end
HRESULT_FROM_WIN32(x) click to toggle source
# File lib/windows_com/common.rb, line 103
def HRESULT_FROM_WIN32(x)
        (x <= 0) ?
                x :
                (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000
end
InitializeOle() click to toggle source
# File lib/windows_com/ole.rb, line 14
def InitializeOle
        DetonateHresult(:OleInitialize, nil)

        STDERR.puts "OLE initialized" if $DEBUG

        at_exit {
                OleUninitialize()

                STDERR.puts "OLE uninitialized" if $DEBUG
        }
end
SUCCEEDED(hr) click to toggle source
# File lib/windows_com/common.rb, line 95
def SUCCEEDED(hr)
        hr >= 0
end
UsingCOMObjects(*objs) { |*objs| ... } click to toggle source
# File lib/windows_com/common.rb, line 13
def UsingCOMObjects(*objs)
        yield(*objs)
ensure
        objs.each { |obj|
                obj.Release
        }
end