2018-10-20 07:54:09 -04:00
|
|
|
begin
|
|
|
|
require 'win32ole'
|
|
|
|
rescue LoadError
|
|
|
|
end
|
|
|
|
|
|
|
|
if defined?(WIN32OLE)
|
|
|
|
module AvailableOLE
|
|
|
|
module_function
|
|
|
|
|
|
|
|
def sysmon_available?
|
|
|
|
WIN32OLE_TYPE.new('System Monitor Control', 'SystemMonitor')
|
|
|
|
true
|
|
|
|
rescue
|
|
|
|
false
|
|
|
|
end
|
2018-10-20 10:34:30 -04:00
|
|
|
|
|
|
|
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
|
2018-10-20 07:54:09 -04:00
|
|
|
end
|
|
|
|
end
|