public OLECompoundFileInfo(string FileToScan, ref XMLParser raport)
    {
        CompoundFile      file = new CompoundFile(FileToScan);
        CFStream          summaryinformation = file.RootStorage.GetStream("\u0005SummaryInformation");
        PropertySetStream propertySetStream  = summaryinformation.AsOLEProperties();

        raport.InitializeOle();
        for (int i = 0; i < propertySetStream.PropertySet0.NumProperties; i++)
        {
            raport.AddSummInfoAtt(propertySetStream.PropertySet0.PropertyIdentifierAndOffsets.ElementAt(i).PropertyIdentifier, propertySetStream.PropertySet0.Properties[i].Value.ToString());
        }
        CFStream documentSummaryinformation = file.RootStorage.TryGetStream("\u0005DocumentSummaryInformation");

        if (documentSummaryinformation != null)
        {
            PropertySetStream propertyDSSetStream = documentSummaryinformation.AsOLEProperties();
            raport.InitializeDocOle();
            for (int i = 0; i < propertyDSSetStream.PropertySet0.NumProperties; i++)
            {
                raport.AddDocSummInfoAtt(propertyDSSetStream.PropertySet0.PropertyIdentifierAndOffsets.ElementAt(i).PropertyIdentifier, propertyDSSetStream.PropertySet0.Properties[i].Value.ToString());
            }
        }
    }
Exemplo n.º 2
0
        private void treeView1_MouseUp(object sender, MouseEventArgs e)
        {
            // Get the node under the mouse cursor.
            // We intercept both left and right mouse clicks
            // and set the selected treenode according.

            TreeNode n = treeView1.GetNodeAt(e.X, e.Y);

            if (n != null)
            {
                if (this.hexEditor.ByteProvider != null && this.hexEditor.ByteProvider.HasChanges())
                {
                    if (MessageBox.Show("Do you want to save pending changes ?", "Save changes", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        this.hexEditor.ByteProvider.ApplyChanges();
                    }
                }

                treeView1.SelectedNode = n;


                // The tag property contains the underlying CFItem.
                CFItem target = (CFItem)n.Tag;

                if (target.IsStream)
                {
                    addStorageStripMenuItem1.Enabled    = false;
                    addStreamToolStripMenuItem.Enabled  = false;
                    importDataStripMenuItem1.Enabled    = true;
                    exportDataToolStripMenuItem.Enabled = true;

#if OLE_PROPERTY
                    if (target.Name == "\u0005SummaryInformation" || target.Name == "\u0005DocumentSummaryInformation")
                    {
                        PropertySetStream mgr = ((CFStream)target).AsOLEProperties();

                        DataTable ds = new DataTable();
                        ds.Columns.Add("Name", typeof(String));
                        ds.Columns.Add("Type", typeof(String));
                        ds.Columns.Add("Value", typeof(String));

                        for (int i = 0; i < mgr.PropertySet0.NumProperties; i++)
                        {
                            ITypedPropertyValue p = mgr.PropertySet0.Properties[i];

                            DataRow dr = ds.NewRow();
                            dr.ItemArray = new Object[] { mgr.PropertySet0.PropertyIdentifierAndOffsets[i].PropertyIdentifier.GetDescription(), p.VTType, p.PropertyValue };
                            ds.Rows.Add(dr);
                        }

                        ds.AcceptChanges();
                        dgvOLEProps.DataSource = ds;
                    }
#endif
                }
            }
            else
            {
                addStorageStripMenuItem1.Enabled    = true;
                addStreamToolStripMenuItem.Enabled  = true;
                importDataStripMenuItem1.Enabled    = false;
                exportDataToolStripMenuItem.Enabled = false;
            }

            if (n != null)
            {
                propertyGrid1.SelectedObject = n.Tag;
            }


            if (n != null)
            {
                CFStream targetStream = n.Tag as CFStream;
                if (targetStream != null)
                {
                    this.hexEditor.ByteProvider = new StreamDataProvider(targetStream);
                }
                else
                {
                    this.hexEditor.ByteProvider = null;
                }
            }
        }