private async void menuViewCreateInstanceFromCLSID_Click(object sender, EventArgs e) { using (CreateCLSIDForm frm = new CreateCLSIDForm()) { if (frm.ShowDialog() == DialogResult.OK) { try { Guid g = frm.Clsid; Dictionary <string, string> props = new Dictionary <string, string>(); object comObj = null; string strObjName = ""; IEnumerable <COMInterfaceEntry> ints = null; if (m_registry.Clsids.ContainsKey(g)) { COMCLSIDEntry ent = m_registry.Clsids[g]; strObjName = ent.Name; props.Add("CLSID", ent.Clsid.ToString("B")); props.Add("Name", ent.Name); props.Add("Server", ent.Server); comObj = ent.CreateInstanceAsObject(frm.ClsCtx); await ent.LoadSupportedInterfacesAsync(false); } else { Guid unk = COMInterfaceEntry.IID_IUnknown; IntPtr pObj; if (COMUtilities.CoCreateInstance(ref g, IntPtr.Zero, frm.ClsCtx, ref unk, out pObj) == 0) { ints = m_registry.GetInterfacesForIUnknown(pObj); comObj = Marshal.GetObjectForIUnknown(pObj); strObjName = g.ToString("B"); props.Add("CLSID", g.ToString("B")); Marshal.Release(pObj); } } if (comObj != null) { /* Need to implement a type library reader */ Type dispType = COMUtilities.GetDispatchTypeInfo(comObj); HostControl(new ObjectInformation(m_registry, strObjName, comObj, props, ints.ToArray())); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
private async void menuViewCreateInstanceFromCLSID_Click(object sender, EventArgs e) { using (CreateCLSIDForm frm = new CreateCLSIDForm()) { if (frm.ShowDialog() == DialogResult.OK) { await CreateInstanceFromCLSID(frm.Clsid, frm.ClsCtx, frm.ClassFactory); } } }
private void menuViewCreateInstanceFromCLSID_Click(object sender, EventArgs e) { using (CreateCLSIDForm frm = new CreateCLSIDForm()) { if (frm.ShowDialog() == DialogResult.OK) { try { Guid g = frm.Clsid; Dictionary<string, string> props = new Dictionary<string, string>(); object comObj = null; string strObjName = ""; COMInterfaceEntry[] ints = null; if (COMRegistry.Instance.Clsids.ContainsKey(g)) { COMCLSIDEntry ent = COMRegistry.Instance.Clsids[g]; strObjName = ent.Name; props.Add("CLSID", ent.Clsid.ToString("B")); props.Add("Name", ent.Name); props.Add("Server", ent.Server); comObj = ent.CreateInstanceAsObject(frm.ClsCtx); ints = COMRegistry.Instance.GetSupportedInterfaces(ent, false); } else { Guid unk = COMInterfaceEntry.IID_IUnknown; IntPtr pObj; if (COMUtilities.CoCreateInstance(ref g, IntPtr.Zero, frm.ClsCtx, ref unk, out pObj) == 0) { ints = COMRegistry.Instance.GetInterfacesForIUnknown(pObj); comObj = Marshal.GetObjectForIUnknown(pObj); strObjName = g.ToString("B"); props.Add("CLSID", g.ToString("B")); Marshal.Release(pObj); } } if (comObj != null) { /* Need to implement a type library reader */ Type dispType = COMUtilities.GetDispatchTypeInfo(comObj); HostControl(new ObjectInformation(strObjName, comObj, props, ints)); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }