Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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);
             }
         }
     }
 }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
                    }
                }
            }
        }