void ReadComRegData(ComRegData entity) { if (entity == null) { return; } KernelWin.WriteLine("正在处理COM数据 {0}", typeof(ComRegData).Name); UInt32 address = (UInt32)entity.Address + ImageBase; VBStruct.Make <ComRegData>(entity, address, true); if (entity.RegInfo2 == null || entity.RegInfo2.Length <= 0) { return; } foreach (ComRegInfo item in entity.RegInfo2) { KernelWin.WriteLine("COM组件 {0}", item.Name); Int32 addr = (Int32)(item.Address + ImageBase); VBStruct.Make <ComRegInfo>(item, address, true); Bytes.MakeNameAnyway((UInt32)addr, "Com_" + item.Name); } }
public void LoadVBInfo(VBInfo info) { treeView1.Nodes.Clear(); TreeNodeCollection rootNodes = treeView1.Nodes; TreeNodeCollection nodes = rootNodes; TreeNode node = null; VBHeader vbheader = info.HeaderInfo; node = rootNodes.Add(typeof(VBHeader).Name); node.Tag = vbheader; node = rootNodes.Add(typeof(ProjectInfo).Name); node.Tag = vbheader.ProjectInfo2; if (vbheader.ProjectInfo2.ObjectTable2 != null) { node = rootNodes.Add(typeof(ObjectTable).Name); ObjectTable entity = vbheader.ProjectInfo2.ObjectTable2; node.Tag = entity; if (entity.ProjectInfo22 != null) { node = rootNodes.Add(typeof(ProjectInfo2).Name); node.Tag = entity.ProjectInfo22; } if (entity.Objects != null && entity.Objects.Length > 0) { node = rootNodes.Add("对象"); nodes = node.Nodes; foreach (PublicObjectDescriptor item in entity.Objects) { node = nodes.Add(item.Name); node.Tag = item; TreeNode node2 = null; if (item.ObjectInfo2 != null) { node2 = node.Nodes.Add(typeof(ObjectInfo).Name); node2.Tag = item.ObjectInfo2; } if (item.OptionalObjectInfo != null) { node2 = node.Nodes.Add(typeof(OptionalObjectInfo).Name); node2.Tag = item.OptionalObjectInfo; TreeNode node3 = null; if (item.OptionalObjectInfo.EventLinks != null && item.OptionalObjectInfo.EventLinks.Length > 0) { node2 = node.Nodes.Add("事件"); Int32 i = 1; foreach (EventLink2 elm in item.OptionalObjectInfo.EventLinks) { String name = String.Empty; if (item.ProcNames != null && item.ProcNames.Length > i - 1) { name = item.Name + "_" + item.ProcNames[i - 1].FriendName; } if (String.IsNullOrEmpty(name)) { name = item.Name + "_" + i.ToString("X2"); } i++; node3 = node2.Nodes.Add(name); node3.Tag = elm; } } if (item.OptionalObjectInfo.Controls != null && item.OptionalObjectInfo.Controls.Length > 0) { node2 = node.Nodes.Add("控件"); foreach (VBControl elm in item.OptionalObjectInfo.Controls) { node3 = node2.Nodes.Add(elm.Name2); node3.Tag = elm; } } } //if (item.ProcNames != null && item.ProcNames.Length > 0) //{ // foreach (ProcName elm in item.ProcNames) // { // node2 = node.Nodes.Add(elm.Name); // node2.Tag = elm; // } //} } } } if (vbheader.ComRegisterData2 != null) { node = rootNodes.Add(typeof(ComRegData).Name); ComRegData entity = vbheader.ComRegisterData2; node.Tag = entity; if (entity.RegInfo2 != null && entity.RegInfo2.Length > 0) { node = rootNodes.Add("COM注册"); nodes = node.Nodes; foreach (ComRegInfo item in entity.RegInfo2) { node = nodes.Add(item.Name); node.Tag = item; } } } if (vbheader.ExternalComponentTables != null && vbheader.ExternalComponentTables.Length > 0) { node = rootNodes.Add("引用组件"); nodes = node.Nodes; foreach (ExternalComponentTable item in vbheader.ExternalComponentTables) { node = nodes.Add(item.Name2); node.Tag = item; } } if (vbheader.GUITables != null && vbheader.GUITables.Length > 0) { node = rootNodes.Add("窗体"); nodes = node.Nodes; foreach (GUITable item in vbheader.GUITables) { node = nodes.Add(typeof(GUITable).Name); node.Tag = item; } } }