private IEnumerable <COMTypeLibVersionEntry> LoadFromLocales(string name, string version, RegistryKey key) { List <COMTypeLibVersionEntry> entries = new List <COMTypeLibVersionEntry>(); foreach (string locale in key.GetSubKeyNames()) { int locale_int; if (int.TryParse(locale, out locale_int)) { using (RegistryKey subkey = key.OpenSubKey(locale)) { if (subkey != null) { COMTypeLibVersionEntry entry = new COMTypeLibVersionEntry(m_registry, name, version, TypelibId, locale_int, subkey); if (!string.IsNullOrWhiteSpace(entry.NativePath)) { entries.Add(entry); } } } } } return(entries); }
private void SetupTypeLibVersionEntry(COMTypeLibVersionEntry entry) { if (entry == null) { return; } textBoxTypeLibName.Text = entry.Name; textBoxTypeLibId.Text = GetGuidValue(entry.TypelibId); textBoxTypeLibVersion.Text = entry.Version; textBoxTypeLibWin32.Text = GetStringValue(entry.Win32Path); textBoxTypeLibWin64.Text = GetStringValue(entry.Win64Path); m_typelib = entry; tabControlProperties.TabPages.Add(tabPageTypeLib); }
private void LoadFromKey(RegistryKey key) { foreach (string version in key.GetSubKeyNames()) { using (RegistryKey subKey = key.OpenSubKey(version)) { if (subKey != null) { COMTypeLibVersionEntry entry = new COMTypeLibVersionEntry(version, m_typelibid, subKey); m_versions.Add(entry); } } } }
public TypeLibControl(COMTypeLibVersionEntry entry, Assembly typeLib) { InitializeComponent(); List <ListViewItem> items = new List <ListViewItem>(); foreach (Type t in typeLib.GetTypes().Where(t => Attribute.IsDefined(t, typeof(ComImportAttribute)) && t.IsInterface)) { ListViewItem item = new ListViewItem(String.Format("{0} - {1}", t.Name, t.GUID)); item.Tag = t; items.Add(item); } listViewTypes.Items.AddRange(items.ToArray()); this.Text = entry.Name; }
public override bool Equals(object obj) { if (base.Equals(obj)) { return(true); } COMTypeLibVersionEntry right = obj as COMTypeLibVersionEntry; if (right == null) { return(false); } return(Version == right.Version && Name == right.Name && Win32Path == right.Win32Path && Win64Path == right.Win64Path); }
private TreeNode CreateTypelibVersionNode(COMTypeLibVersionEntry entry) { TreeNode node = new TreeNode(String.Format("{0} : Version {1}", entry.Name, entry.Version), ClassIcon, ClassIcon); node.Tag = entry; List <string> entries = new List <string>(); if (!String.IsNullOrWhiteSpace(entry.Win32Path)) { entries.Add(String.Format("Win32: {0}", entry.Win32Path)); } if (!String.IsNullOrWhiteSpace(entry.Win64Path)) { entries.Add(String.Format("Win64: {0}", entry.Win64Path)); } node.ToolTipText = String.Join("\r\n", entries); return(node); }
private void viewTypeLibraryToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = treeComRegistry.SelectedNode; if (node != null) { COMTypeLibVersionEntry ent = node.Tag as COMTypeLibVersionEntry; if (ent == null) { COMCLSIDEntry clsid = node.Tag as COMCLSIDEntry; COMProgIDEntry progid = node.Tag as COMProgIDEntry; if (progid != null) { clsid = m_reg.MapClsidToEntry(progid.Clsid); } if (clsid != null && m_reg.Typelibs.ContainsKey(clsid.TypeLib)) { ent = m_reg.Typelibs[clsid.TypeLib].Versions.First(); } } if (ent != null) { try { Assembly typeLibary = COMUtilities.LoadTypeLib(ent.NativePath); TypeLibControl view = new TypeLibControl(ent, typeLibary); Program.GetMainForm().HostControl(view); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }