Module: WindowsCOM
- Extended by:
- FFI::Library
- Defined in:
- lib/windows_com/ole.rb,
lib/windows_com/libc.rb,
lib/windows_com/common.rb,
lib/windows_com/oleaut.rb,
lib/windows_com/shlwapi.rb
Defined Under Namespace
Modules: COMCallback, COMFactory, COMInterface, COMInterface_, COMVtbl_, FFIStructAnonymousAccess, FFIStructMemoryEquality, VariantBasicCreation
Classes: BLOB, BSTRBLOB, CA, COMVptr_, DECIMAL, DISPPARAMS, FILETIME, GUID, INTERFACEDATA, LARGE_INTEGER, METHODDATA, PARAMDATA, PROPERTYKEY, PROPVARIANT, SAFEARRAY, SAFEARRAYBOUND, ULARGE_INTEGER, VARIANT
Constant Summary
collapse
- VT_EMPTY =
0
- VT_NULL =
1
- VT_I2 =
2
- VT_I4 =
3
- VT_R4 =
4
- VT_R8 =
5
- VT_CY =
6
- VT_DATE =
7
- VT_BSTR =
8
- VT_DISPATCH =
9
- VT_ERROR =
10
- VT_BOOL =
11
- VT_VARIANT =
12
- VT_UNKNOWN =
13
- VT_DECIMAL =
14
- VT_I1 =
16
- VT_UI1 =
17
- VT_UI2 =
18
- VT_UI4 =
19
- VT_I8 =
20
- VT_UI8 =
21
- VT_INT =
22
- VT_UINT =
23
- VT_VOID =
24
- VT_HRESULT =
25
- VT_PTR =
26
- VT_SAFEARRAY =
27
- VT_CARRAY =
28
- VT_USERDEFINED =
29
- VT_LPSTR =
30
- VT_LPWSTR =
31
- VT_FILETIME =
64
- VT_BLOB =
65
- VT_STREAM =
66
- VT_STORAGE =
67
- VT_STREAMED_OBJECT =
68
- VT_STORED_OBJECT =
69
- VT_BLOB_OBJECT =
70
- VT_CF =
71
- VT_CLSID =
72
- VT_VECTOR =
0x1000
- VT_ARRAY =
0x2000
- VT_BYREF =
0x4000
- VT_RESERVED =
0x8000
- VT_ILLEGAL =
0xffff
- VT_ILLEGALMASKED =
0xfff
- VT_TYPEMASK =
0xff
- CLSCTX_INPROC_SERVER =
0x1
- CLSCTX_INPROC_HANDLER =
0x2
- CLSCTX_LOCAL_SERVER =
0x4
- CLSCTX_INPROC_SERVER16 =
0x8
- CLSCTX_REMOTE_SERVER =
0x10
- CLSCTX_INPROC_HANDLER16 =
0x20
- CLSCTX_RESERVED1 =
0x40
- CLSCTX_RESERVED2 =
0x80
- CLSCTX_RESERVED3 =
0x100
- CLSCTX_RESERVED4 =
0x200
- CLSCTX_NO_CODE_DOWNLOAD =
0x400
- CLSCTX_RESERVED5 =
0x800
- CLSCTX_NO_CUSTOM_MARSHAL =
0x1000
- CLSCTX_ENABLE_CODE_DOWNLOAD =
0x2000
- CLSCTX_NO_FAILURE_LOG =
0x4000
- CLSCTX_DISABLE_AAA =
0x8000
- CLSCTX_ENABLE_AAA =
0x10000
- CLSCTX_FROM_DEFAULT_CONTEXT =
0x20000
- CLSCTX_ACTIVATE_32_BIT_SERVER =
0x40000
- CLSCTX_ACTIVATE_64_BIT_SERVER =
0x80000
- CLSCTX_ENABLE_CLOAKING =
0x100000
- CLSCTX_PS_DLL =
-0x80000000
- CLSCTX_INPROC =
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER
- CLSCTX_ALL =
CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER
- CLSCTX_SERVER =
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER
- IUnknown =
- IDispatch =
- IConnectionPointContainer =
- IConnectionPoint =
- IObjectWithSite =
- S_OK =
0
- S_FALSE =
1
- E_UNEXPECTED =
0x8000FFFF - 0x1_0000_0000
- E_NOTIMPL =
0x80004001 - 0x1_0000_0000
- E_OUTOFMEMORY =
0x8007000E - 0x1_0000_0000
- E_INVALIDARG =
0x80070057 - 0x1_0000_0000
- E_NOINTERFACE =
0x80004002 - 0x1_0000_0000
- E_POINTER =
0x80004003 - 0x1_0000_0000
- E_HANDLE =
0x80070006 - 0x1_0000_0000
- E_ABORT =
0x80004004 - 0x1_0000_0000
- E_FAIL =
0x80004005 - 0x1_0000_0000
- E_ACCESSDENIED =
0x80070005 - 0x1_0000_0000
- E_PENDING =
0x8000000A - 0x1_0000_0000
- FACILITY_WIN32 =
7
- ERROR_CANCELLED =
1223
- OLEIVERB_PRIMARY =
0
- OLEIVERB_SHOW =
-1
- OLEIVERB_OPEN =
-2
- OLEIVERB_HIDE =
-3
- OLEIVERB_UIACTIVATE =
-4
- OLEIVERB_INPLACEACTIVATE =
-5
- OLEIVERB_DISCARDUNDOSTATE =
-6
- IOleWindow =
- IOleInPlaceObject =
- IOleInPlaceSite =
- IOleClientSite =
- OLEGETMONIKER_ONLYIFTHERE =
1
- OLEGETMONIKER_FORCEASSIGN =
2
- OLEGETMONIKER_UNASSIGN =
3
- OLEGETMONIKER_TEMPFORUSER =
4
- OLEWHICHMK_CONTAINER =
1
- OLEWHICHMK_OBJREL =
2
- OLEWHICHMK_OBJFULL =
3
- USERCLASSTYPE_FULL =
1
- USERCLASSTYPE_SHORT =
2
- USERCLASSTYPE_APPNAME =
3
- OLEMISC_RECOMPOSEONRESIZE =
0x00000001
- OLEMISC_ONLYICONIC =
0x00000002
- OLEMISC_INSERTNOTREPLACE =
0x00000004
- OLEMISC_STATIC =
0x00000008
- OLEMISC_CANTLINKINSIDE =
0x00000010
- OLEMISC_CANLINKBYOLE1 =
0x00000020
- OLEMISC_ISLINKOBJECT =
0x00000040
- OLEMISC_INSIDEOUT =
0x00000080
- OLEMISC_ACTIVATEWHENVISIBLE =
0x00000100
- OLEMISC_RENDERINGISDEVICEINDEPENDENT =
0x00000200
- OLEMISC_INVISIBLEATRUNTIME =
0x00000400
- OLEMISC_ALWAYSRUN =
0x00000800
- OLEMISC_ACTSLIKEBUTTON =
0x00001000
- OLEMISC_ACTSLIKELABEL =
0x00002000
- OLEMISC_NOUIACTIVATE =
0x00004000
- OLEMISC_ALIGNABLE =
0x00008000
- OLEMISC_SIMPLEFRAME =
0x00010000
- OLEMISC_SETCLIENTSITEFIRST =
0x00020000
- OLEMISC_IMEMODE =
0x00040000
- OLEMISC_IGNOREACTIVATEWHENVISIBLE =
0x00080000
0x00100000
- OLEMISC_SUPPORTSMULTILEVELUNDO =
0x00200000
- OLECLOSE_SAVEIFDIRTY =
0
- OLECLOSE_NOSAVE =
1
- OLECLOSE_PROMPTSAVE =
2
- IOleObject =
- CC_FASTCALL =
0
- CC_CDECL =
1
- CC_MSCPASCAL =
CC_CDECL + 1
- CC_PASCAL =
CC_MSCPASCAL
- CC_MACPASCAL =
CC_PASCAL + 1
- CC_STDCALL =
CC_MACPASCAL + 1
- CC_FPFASTCALL =
CC_STDCALL + 1
- CC_SYSCALL =
CC_FPFASTCALL + 1
- CC_MPWCDECL =
CC_SYSCALL + 1
- CC_MPWPASCAL =
CC_MPWCDECL + 1
- CC_MAX =
CC_MPWPASCAL + 1
- DISPATCH_METHOD =
0x1
- DISPATCH_PROPERTYGET =
0x2
- DISPATCH_PROPERTYPUT =
0x4
- DISPATCH_PROPERTYPUTREF =
0x8
Class Method Summary
collapse
Class Method Details
.DetonateHresult(name, *args) ⇒ Object
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/windows_com/common.rb', line 19
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) ⇒ Object
97
98
99
|
# File 'lib/windows_com/common.rb', line 97
def FAILED(hr)
hr < 0
end
|
.HRESULT_FROM_WIN32(x) ⇒ Object
101
102
103
104
105
|
# File 'lib/windows_com/common.rb', line 101
def HRESULT_FROM_WIN32(x)
(x <= 0) ?
x :
(x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000
end
|
.InitializeOle ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
|
# 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) ⇒ Object
93
94
95
|
# File 'lib/windows_com/common.rb', line 93
def SUCCEEDED(hr)
hr >= 0
end
|
.UsingCOMObjects(*objs) ⇒ Object
11
12
13
14
15
16
17
|
# File 'lib/windows_com/common.rb', line 11
def UsingCOMObjects(*objs)
yield(*objs)
ensure
objs.each { |obj|
obj.Release
}
end
|