private MSXML2.IXMLDOMDocument2 DoWordDomDiscover(string testFile, IMWMetadataElements elements) { Workshare.Protect.Builders.IMWXMLBuilder xmlBuilder = new Workshare.Protect.Builders.CXMLBuilderClass(); IMWHostInstanceManager wordInstanceManager = (IMWHostInstanceManager)CreateComObject("WordInstanceManager.Controller"); object wordDocument = wordInstanceManager.OpenDocument(testFile, false); IMWStrategy strategy = (IMWStrategy)CreateComObject("Metawall.WordDOMDiscoverer"); xmlBuilder.Advise(strategy); try { xmlBuilder.OnDocumentBegin(testFile, "MSWORD"); strategy.Execute(wordDocument, elements); xmlBuilder.OnDocumentEnd(); return (MSXML2.IXMLDOMDocument2)xmlBuilder.XmlDocument; } finally { xmlBuilder.Unadvise(strategy); wordInstanceManager.CloseDocument(wordDocument, false); Marshal.ReleaseComObject(wordInstanceManager); Marshal.ReleaseComObject(strategy); } }
private MSXML2.IXMLDOMDocument2 DoWordBinaryDiscovery(string testFile, IMWMetadataElements elements) { Workshare.Protect.Builders.IMWXMLBuilder xmlBuilder = new Workshare.Protect.Builders.CXMLBuilderClass(); IMWStrategy strategy = (IMWStrategy)CreateComObject("Metawall.WordBinaryDiscoverer"); xmlBuilder.Advise(strategy); try { xmlBuilder.OnDocumentBegin(testFile, "MSWORD"); strategy.Execute(testFile, elements); xmlBuilder.OnDocumentEnd(); return (MSXML2.IXMLDOMDocument2)xmlBuilder.XmlDocument; } finally { xmlBuilder.Unadvise(strategy); Marshal.ReleaseComObject(strategy); } }
private MSXML2.IXMLDOMDocument2 DoWordBddaDiscover(string testFile, IMWMetadataElements elements) { Workshare.Protect.Builders.IMWXMLBuilder xmlBuilder = new Workshare.Protect.Builders.CXMLBuilderClass(); IMWStrategy strategy = (IMWStrategy)CreateComObject("Workshare.ContentDiscoveryStrategy"); xmlBuilder.Advise(strategy); try { xmlBuilder.OnDocumentBegin(testFile, "MSWORD"); try { strategy.Execute(testFile, elements); } catch(COMException e) { if(S_FALSE != e.ErrorCode) throw e; } xmlBuilder.OnDocumentEnd(); return (MSXML2.IXMLDOMDocument2)xmlBuilder.XmlDocument; } finally { xmlBuilder.Unadvise(strategy); Marshal.ReleaseComObject(strategy); } }