public static GetObjectClass ( object p ) : System.Guid | ||
p | object | |
return | System.Guid |
/// <summary> /// Constructor /// </summary> /// <param name="objName">Descriptive name of the object</param> /// <param name="pObject">Managed wrapper to the object</param> /// <param name="properties">List of textual properties to display</param> /// <param name="interfaces">List of available interfaces</param> public ObjectInformation(COMRegistry registry, COMCLSIDEntry entry, string objName, Object pObject, Dictionary <string, string> properties, COMInterfaceEntry[] interfaces) { m_entry = entry; if (m_entry == null) { Guid clsid = COMUtilities.GetObjectClass(pObject); if (registry.Clsids.ContainsKey(clsid)) { m_entry = registry.MapClsidToEntry(clsid); } } m_registry = registry; m_pEntry = ObjectCache.Add(registry, objName, pObject, interfaces); m_pObject = pObject; m_properties = properties; m_interfaces = interfaces; m_objName = objName; InitializeComponent(); LoadProperties(); LoadInterfaces(); Text = m_objName; listViewInterfaces.ListViewItemSorter = new ListItemComparer(0); }
private async void OpenObjectInformation(object comObj, string defaultName) { if (comObj != null) { Dictionary <string, string> props = new Dictionary <string, string>(); string strObjName = ""; IEnumerable <COMInterfaceEntry> ints = null; Guid clsid = COMUtilities.GetObjectClass(comObj); if (m_registry.Clsids.ContainsKey(clsid)) { COMCLSIDEntry ent = m_registry.Clsids[clsid]; strObjName = ent.Name; props.Add("CLSID", ent.Clsid.ToString("B")); props.Add("Name", ent.Name); props.Add("Server", ent.Server); await ent.LoadSupportedInterfacesAsync(false); ints = ent.Interfaces.Select(i => m_registry.MapIidToInterface(i.Iid)); } else { ints = m_registry.GetInterfacesForObject(comObj); strObjName = defaultName != null ? defaultName : clsid.ToString("B"); props.Add("CLSID", clsid.ToString("B")); } Type dispType = COMUtilities.GetDispatchTypeInfo(comObj); HostControl(new ObjectInformation(m_registry, strObjName, comObj, props, ints.ToArray())); } }
void LoadROT(bool trusted_only) { IBindCtx bindCtx; listViewROT.Items.Clear(); try { bindCtx = COMUtilities.CreateBindCtx(trusted_only ? 1U : 0U); IRunningObjectTable rot; IEnumMoniker enumMoniker; IMoniker[] moniker = new IMoniker[1]; bindCtx.GetRunningObjectTable(out rot); rot.EnumRunning(out enumMoniker); while (enumMoniker.Next(1, moniker, IntPtr.Zero) == 0) { string strDisplayName; moniker[0].GetDisplayName(bindCtx, null, out strDisplayName); Guid clsid = COMUtilities.GetObjectClass(moniker[0]); ListViewItem item = listViewROT.Items.Add(strDisplayName); item.Tag = new MonikerInfo(strDisplayName, clsid, moniker[0]); if (m_registry.Clsids.ContainsKey(clsid)) { item.SubItems.Add(m_registry.Clsids[clsid].Name); } else { item.SubItems.Add(clsid.FormatGuid()); } } } catch (Exception e) { EntryPoint.ShowError(this, e); } listViewROT.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); }