diff options
Diffstat (limited to 'test/win32ole/available_ole.rb')
-rw-r--r-- | test/win32ole/available_ole.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/win32ole/available_ole.rb b/test/win32ole/available_ole.rb index e697092032..ebc9baae66 100644 --- a/test/win32ole/available_ole.rb +++ b/test/win32ole/available_ole.rb @@ -13,5 +13,29 @@ if defined?(WIN32OLE) rescue false end + + def ado_available? + WIN32OLE.new('ADODB.Connection') + true + rescue + false + end + + def msxml_available? + !WIN32OLE_TYPELIB.typelibs.find { |t| t.name.start_with?('Microsoft XML') }.nil? + end + + def event_param + method = if msxml_available? + typelib = WIN32OLE_TYPELIB.typelibs.find { |t| t.name.start_with?('Microsoft XML') } + ole_type = WIN32OLE_TYPE.new(typelib.name, 'IVBSAXContentHandler') + WIN32OLE_METHOD.new(ole_type, 'startElement') + elsif ado_available? + typelib = WIN32OLE.new('ADODB.Connection').ole_typelib + ole_type = WIN32OLE_TYPE.new(typelib.name, 'Connection') + WIN32OLE_METHOD.new(ole_type, 'WillConnect') + end + method && method.params[0] + end end end |