internal MemoryStream GetEmfMemoryStream(Sheet sheet) { HRESULT hr = HRESULT.E_FAIL; IStorage viewerStorage = null; IStream emzStream = null; MemoryStream memoryStream = null; try { Marshal.ThrowExceptionForHR(hr = RootStorage.OpenStorage(StorageName.JDraftViewerInfo, out viewerStorage)); Marshal.ThrowExceptionForHR(hr = viewerStorage.OpenStream(sheet.StreamName, out emzStream)); memoryStream = emzStream.DecompressZlib(); } catch { } finally { if (emzStream != null) { emzStream.FinalRelease(); } if (viewerStorage != null) { viewerStorage.FinalRelease(); } } return(memoryStream); }
private void LoadZones() { HRESULT hr = HRESULT.S_OK; List <Zone> list = new List <Zone>(); IStorage storage = null; try { if (NativeMethods.Succeeded(hr = RootStorage.OpenStorage(StorageName.Zones, out storage))) { System.Runtime.InteropServices.ComTypes.STATSTG[] elements; if (NativeMethods.Succeeded(hr = storage.EnumElements(out elements))) { foreach (System.Runtime.InteropServices.ComTypes.STATSTG element in elements) { if ((STGTY)element.type == STGTY.STREAM) { list.Add(new Zone(element.pwcsName)); } } } } } catch { } finally { if (storage != null) { storage.FinalRelease(); } } _zones = list.ToArray(); }