public override int GetHashCode() { return(Clsid.GetHashCode() ^ Name.GetSafeHashCode() ^ TreatAs.GetHashCode() ^ AppID.GetHashCode() ^ TypeLib.GetHashCode() ^ Servers.Values.GetEnumHashCode() ^ Elevation.GetSafeHashCode() ^ ActivatableFromApp.GetHashCode() ^ TrustedMarshaller.GetHashCode() ^ Source.GetHashCode() ^ PackageId.GetSafeHashCode()); }
public TypeInfoMatchTarget(TypeLib typeLib, TypeInfo typeInfo, TYPEKIND typeKind) { m_typeLib = typeLib; m_typeInfo = typeInfo; m_typeKind = typeKind; m_typeString = TypeLibUtility.TypeKind2String(m_typeKind); m_guid = typeInfo.GetTypeAttr().Guid; }
private MockedTestEngine() { Dispatcher.Setup(d => d.InvokeAsync(It.IsAny <Action>())).Callback((Action action) => action.Invoke()).Verifiable(); TypeLib.Setup(tlm => tlm.Dispose()).Verifiable(); WrapperProvider.Setup(p => p.TypeLibWrapperFromProject(It.IsAny <string>())).Returns(TypeLib.Object).Verifiable(); _fakesFactory.Setup(factory => factory.Create()).Returns(_createdFakes.Object); }
public void SetTypeLibrary(TypeLib typeLib) { TreeNode root = TypeLib2TreeNodeProcessor.GetTypeLibNode(typeLib, m_displayLevel); TypeLib2TreeNodeProcessor.SetTlbTreeNodeImage(root); this.BeginUpdate(); this.Nodes.Clear(); this.Nodes.Add(root); root.Expand(); this.EndUpdate(); }
internal static TreeNode GetTypeLibNode(TypeLib tlb, DisplayLevel displayLevel) { string typeLibName = tlb.GetDocumentation(); TreeNode root = new TreeNode(typeLibName); root.Tag = tlb; int nCount = tlb.GetTypeInfoCount(); for (int n = 0; n < nCount; ++n) { TypeInfo type = tlb.GetTypeInfo(n); //string typeTypeName = type.GetDocumentation(); //NativeType2String.AddNativeUserDefinedType(typeTypeName); // For dual interfaces, it has a "funky" TKIND_DISPATCH|TKIND_DUAL interface with a parter of TKIND_INTERFACE|TKIND_DUAL interface // The first one is pretty bad and has duplicated all the interface members of its parent, which is not we want // We want the second v-table interface // So, if we indeed has seen this kind of interface, prefer its partner // However, we should not blindly get the partner because those two interfaces partners with each other // So we need to first test to see if the interface is both dispatch & dual, and then get its partner interface using (TypeAttr attr = type.GetTypeAttr()) { if (attr.IsDual && attr.IsDispatch) { TypeInfo typeReferencedType = type.GetRefTypeNoComThrow(); if (typeReferencedType != null) { type = typeReferencedType; } } } TreeNode typeInfoNode = new TreeNode(); TypeInfoMatchTarget typeInfoMatchTarget = null; root.Nodes.Add(typeInfoNode); using (TypeAttr attr = type.GetTypeAttr()) { TYPEKIND kind = attr.typekind; typeInfoMatchTarget = new TypeInfoMatchTarget(tlb, type, kind); if (displayLevel == DisplayLevel.All) { ProcessFunctions(type, typeInfoNode); ProcessFields(type, typeInfoNode); } } typeInfoNode.Text = typeInfoMatchTarget.Name + ": " + typeInfoMatchTarget.Type; typeInfoNode.Tag = typeInfoMatchTarget; SetTlbTreeNodeImage(typeInfoNode); } return(root); }
private void LoadTlb(string tlbFileName) { try { // Load the typelib. System.Runtime.InteropServices.ComTypes.ITypeLib TypeLib = null; APIHelper.LoadTypeLibEx(tlbFileName, REGKIND.REGKIND_DEFAULT, out TypeLib); // Update the tlbTreeView. m_typeLib = new TypeLib((ITypeLib)TypeLib); treeViewTypeLib.SetTypeLibrary(m_typeLib); } catch (Exception) { MessageBox.Show(Resource.FormatString("Wrn_TypeLibLoadFailed", tlbFileName)); } }
private void LoadTlb(string tlbFileName) { try { // Load the typelib. System.Runtime.InteropServices.ComTypes.ITypeLib TypeLib = null; APIHelper.LoadTypeLibEx(tlbFileName, REGKIND.REGKIND_DEFAULT, out TypeLib); // Update the tlbTreeView. TypeLib tlb = new TypeLib((ITypeLib)TypeLib); this.tlbTreeView.SetTypeLibrary(tlb); } catch (Exception) { MessageBox.Show("Err_TypeLibLoad"); } }
private MockedTestEngine() { Dispatcher.Setup(d => d.InvokeAsync(It.IsAny <Action>())) .Callback((Action action) => action.Invoke()) .Verifiable(); Dispatcher.Setup(d => d.StartTask(It.IsAny <Action>(), It.IsAny <TaskCreationOptions>())) .Returns((Action action, TaskCreationOptions options) => { action.Invoke(); return(Task.CompletedTask); }) .Verifiable(); TypeLib.Setup(tlm => tlm.Dispose()).Verifiable(); WrapperProvider.Setup(p => p.TypeLibWrapperFromProject(It.IsAny <string>())).Returns(TypeLib.Object).Verifiable(); _fakesFactory.Setup(factory => factory.Create()).Returns(_createdFakes.Object); }
public static TypeLib GetTypeLib(string guid, string version) { TypeLib result = new TypeLib(); result.Guid = guid; if (result.Guid == null) { return(null); } result.Name = RegistryManipulator.GetKeyDefaultValue("HKEY_CLASSES_ROOT\\Wow6432Node\\TypeLib\\" + guid + "\\" + version); if (result.Name == null) { return(null); } result.Win32Path = RegistryManipulator.GetKeyDefaultValue("HKEY_CLASSES_ROOT\\Wow6432Node\\TypeLib\\" + guid + "\\" + version + "\\0\\win32"); if (result.Win32Path == null) { //sub key under version may be something different than "0". string[] subVersions = RegistryManipulator.GetSubKeys("HKEY_CLASSES_ROOT\\Wow6432Node\\TypeLib\\" + guid + "\\" + version); if (subVersions.Length == 0) { return(null); } string firstSubVersion = subVersions[0]; result.Win32Path = RegistryManipulator.GetKeyDefaultValue("HKEY_CLASSES_ROOT\\Wow6432Node\\TypeLib\\" + guid + "\\" + version + "\\" + firstSubVersion + "\\win32"); if (result.Win32Path == null) { return(null); //failed } } result.Flags = RegistryManipulator.GetKeyDefaultValue("HKEY_CLASSES_ROOT\\Wow6432Node\\TypeLib\\" + guid + "\\" + version + "\\FLAGS"); if (result.Flags == null) { return(null); } result.HelpDir = RegistryManipulator.GetKeyDefaultValue("HKEY_CLASSES_ROOT\\Wow6432Node\\TypeLib\\" + guid + "\\" + version + "\\HELPDIR"); if (result.HelpDir == null) { return(null); } //success return(result); }
public override int GetHashCode() { return(Name.GetSafeHashCode() ^ Iid.GetHashCode() ^ ProxyClsid.GetHashCode() ^ NumMethods.GetHashCode() ^ Base.GetSafeHashCode() ^ TypeLib.GetHashCode() ^ TypeLibVersion.GetSafeHashCode() ^ RuntimeInterface.GetHashCode() ^ Source.GetHashCode()); }
public ComImporter(string path, OutputMessageCollection outputMessages, string outputDisplayName) { _outputMessages = outputMessages; _outputDisplayName = outputDisplayName; if (NativeMethods.SfcIsFileProtected(IntPtr.Zero, path) != 0) { outputMessages.AddWarningMessage("GenerateManifest.ComImport", outputDisplayName, _resources.GetString("ComImporter.ProtectedFile")); } object obj = null; try { NativeMethods.LoadTypeLibEx(path, NativeMethods.RegKind.RegKind_None, out obj); } catch (COMException) { } #pragma warning disable 618 UCOMITypeLib tlib = (UCOMITypeLib)obj; if (tlib != null) { IntPtr typeLibAttrPtr = IntPtr.Zero; tlib.GetLibAttr(out typeLibAttrPtr); var typeLibAttr = (TYPELIBATTR)Marshal.PtrToStructure(typeLibAttrPtr, typeof(TYPELIBATTR)); tlib.ReleaseTLibAttr(typeLibAttrPtr); Guid tlbid = typeLibAttr.guid; tlib.GetDocumentation(-1, out _, out string docString, out _, out string helpFile); string helpdir = Util.FilterNonprintableChars(helpFile); //Path.GetDirectoryName(helpFile); TypeLib = new TypeLib(tlbid, new Version(typeLibAttr.wMajorVerNum, typeLibAttr.wMinorVerNum), helpdir, typeLibAttr.lcid, Convert.ToInt32(typeLibAttr.wLibFlags, CultureInfo.InvariantCulture)); var comClassList = new List <ComClass>(); int count = tlib.GetTypeInfoCount(); for (int i = 0; i < count; ++i) { tlib.GetTypeInfoType(i, out TYPEKIND tkind); if (tkind == TYPEKIND.TKIND_COCLASS) { tlib.GetTypeInfo(i, out UCOMITypeInfo tinfo); IntPtr tinfoAttrPtr = IntPtr.Zero; tinfo.GetTypeAttr(out tinfoAttrPtr); TYPEATTR tinfoAttr = (TYPEATTR)Marshal.PtrToStructure(tinfoAttrPtr, typeof(TYPEATTR)); tinfo.ReleaseTypeAttr(tinfoAttrPtr); Guid clsid = tinfoAttr.guid; tlib.GetDocumentation(i, out _, out docString, out _, out helpFile); string description = Util.FilterNonprintableChars(docString); ClassInfo info = GetRegisteredClassInfo(clsid); if (info == null) { continue; } comClassList.Add(new ComClass(tlbid, clsid, info.Progid, info.ThreadingModel, description)); } } if (comClassList.Count > 0) { ComClasses = comClassList.ToArray(); Success = true; } else { outputMessages.AddErrorMessage("GenerateManifest.ComImport", outputDisplayName, _resources.GetString("ComImporter.NoRegisteredClasses")); Success = false; } } else { outputMessages.AddErrorMessage("GenerateManifest.ComImport", outputDisplayName, _resources.GetString("ComImporter.TypeLibraryLoadFailure")); Success = false; } #pragma warning restore 618 }
public virtual void VisitTypeLib(TypeLib node) { }
public virtual void VisitItem(Object item) { if (item == null) { return; } Module module = item as Module; if (module != null) { VisitModule(module); return; } Product product = item as Product; if (product != null) { VisitProduct(product); return; } Feature feature = item as Feature; if (feature != null) { VisitFeature(feature); return; } AdvtExecuteSequence advtExecuteSequence = item as AdvtExecuteSequence; if (advtExecuteSequence != null) { VisitAdvtExecuteSequence(advtExecuteSequence); return; } InstallUISequence installUISequence = item as InstallUISequence; if (installUISequence != null) { VisitInstallUISequence(installUISequence); return; } User user = item as User; if (user != null) { VisitUser(user); return; } Upgrade upgrade = item as Upgrade; if (upgrade != null) { VisitUpgrade(upgrade); return; } Directory directory = item as Directory; if (directory != null) { VisitDirectory(directory); return; } PropertyRef propertyRef = item as PropertyRef; if (propertyRef != null) { VisitPropertyRef(propertyRef); return; } WebSite webSite = item as WebSite; if (webSite != null) { VisitWebSite(webSite); return; } AdminUISequence adminUISequence = item as AdminUISequence; if (adminUISequence != null) { VisitAdminUISequence(adminUISequence); return; } CustomAction customAction = item as CustomAction; if (customAction != null) { VisitCustomAction(customAction); return; } DirectoryRef directoryRef = item as DirectoryRef; if (directoryRef != null) { VisitDirectoryRef(directoryRef); return; } AppId appId = item as AppId; if (appId != null) { VisitAppId(appId); return; } Media media = item as Media; if (media != null) { VisitMedia(media); return; } CustomTable customTable = item as CustomTable; if (customTable != null) { VisitCustomTable(customTable); return; } Condition condition = item as Condition; if (condition != null) { VisitCondition(condition); return; } SFPCatalog sFPCatalog = item as SFPCatalog; if (sFPCatalog != null) { VisitSFPCatalog(sFPCatalog); return; } UI ui = item as UI; if (ui != null) { VisitUI(ui); return; } FragmentRef fragmentRef = item as FragmentRef; if (fragmentRef != null) { VisitFragmentRef(fragmentRef); return; } Icon icon = item as Icon; if (icon != null) { VisitIcon(icon); return; } Property property = item as Property; if (property != null) { VisitProperty(property); return; } FeatureRef featureRef = item as FeatureRef; if (featureRef != null) { VisitFeatureRef(featureRef); return; } WebDirProperties webDirProperties = item as WebDirProperties; if (webDirProperties != null) { VisitWebDirProperties(webDirProperties); return; } ComplianceCheck complianceCheck = item as ComplianceCheck; if (complianceCheck != null) { VisitComplianceCheck(complianceCheck); return; } InstallExecuteSequence installExecuteSequence = item as InstallExecuteSequence; if (installExecuteSequence != null) { VisitInstallExecuteSequence(installExecuteSequence); return; } AdminExecuteSequence adminExecuteSequence = item as AdminExecuteSequence; if (adminExecuteSequence != null) { VisitAdminExecuteSequence(adminExecuteSequence); return; } Binary binary = item as Binary; if (binary != null) { VisitBinary(binary); return; } Group group = item as Group; if (group != null) { VisitGroup(group); return; } WebApplication webApplication = item as WebApplication; if (webApplication != null) { VisitWebApplication(webApplication); return; } ActionSequenceType actionSequenceType = item as ActionSequenceType; if (actionSequenceType != null) { VisitActionSequenceType(actionSequenceType); return; } ActionModuleSequenceType actionModuleSequenceType = item as ActionModuleSequenceType; if (actionModuleSequenceType != null) { VisitActionModuleSequenceType(actionModuleSequenceType); return; } BillboardAction billboardAction = item as BillboardAction; if (billboardAction != null) { VisitBillboardAction(billboardAction); return; } Error error = item as Error; if (error != null) { VisitError(error); return; } Dialog dialog = item as Dialog; if (dialog != null) { VisitDialog(dialog); return; } ProgressText progressText = item as ProgressText; if (progressText != null) { VisitProgressText(progressText); return; } TextStyle textStyle = item as TextStyle; if (textStyle != null) { VisitTextStyle(textStyle); return; } ListBox listBox = item as ListBox; if (listBox != null) { VisitListBox(listBox); return; } ListView listView = item as ListView; if (listView != null) { VisitListView(listView); return; } ComboBox comboBox = item as ComboBox; if (comboBox != null) { VisitComboBox(comboBox); return; } UIText uIText = item as UIText; if (uIText != null) { VisitUIText(uIText); return; } RadioGroup radioGroup = item as RadioGroup; if (radioGroup != null) { VisitRadioGroup(radioGroup); return; } IniFileSearch iniFileSearch = item as IniFileSearch; if (iniFileSearch != null) { VisitIniFileSearch(iniFileSearch); return; } RegistrySearch registrySearch = item as RegistrySearch; if (registrySearch != null) { VisitRegistrySearch(registrySearch); return; } ComponentSearch componentSearch = item as ComponentSearch; if (componentSearch != null) { VisitComponentSearch(componentSearch); return; } FileSearch fileSearch = item as FileSearch; if (fileSearch != null) { VisitFileSearch(fileSearch); return; } DirectorySearch directorySearch = item as DirectorySearch; if (directorySearch != null) { VisitDirectorySearch(directorySearch); return; } File file = item as File; if (file != null) { VisitFile(file); return; } Component component = item as Component; if (component != null) { VisitComponent(component); return; } Merge merge = item as Merge; if (merge != null) { VisitMerge(merge); return; } Custom custom = item as Custom; if (custom != null) { VisitCustom(custom); return; } WebError webError = item as WebError; if (webError != null) { VisitWebError(webError); return; } WebVirtualDir webVirtualDir = item as WebVirtualDir; if (webVirtualDir != null) { VisitWebVirtualDir(webVirtualDir); return; } WebDir webDir = item as WebDir; if (webDir != null) { VisitWebDir(webDir); return; } WebFilter webFilter = item as WebFilter; if (webFilter != null) { VisitWebFilter(webFilter); return; } MergeRef mergeRef = item as MergeRef; if (mergeRef != null) { VisitMergeRef(mergeRef); return; } Subscribe subscribe = item as Subscribe; if (subscribe != null) { VisitSubscribe(subscribe); return; } Publish publish = item as Publish; if (publish != null) { VisitPublish(publish); return; } TypeLib typeLib = item as TypeLib; if (typeLib != null) { VisitTypeLib(typeLib); return; } Shortcut shortcut = item as Shortcut; if (shortcut != null) { VisitShortcut(shortcut); return; } ODBCTranslator oDBCTranslator = item as ODBCTranslator; if (oDBCTranslator != null) { VisitODBCTranslator(oDBCTranslator); return; } Permission permission = item as Permission; if (permission != null) { VisitPermission(permission); return; } Class _class = item as Class; if (_class != null) { VisitClass(_class); return; } CopyFile copyFile = item as CopyFile; if (copyFile != null) { VisitCopyFile(copyFile); return; } Patch patch = item as Patch; if (patch != null) { VisitPatch(patch); return; } ODBCDriver oDBCDriver = item as ODBCDriver; if (oDBCDriver != null) { VisitODBCDriver(oDBCDriver); return; } PerfCounter perfCounter = item as PerfCounter; if (perfCounter != null) { VisitPerfCounter(perfCounter); return; } FileShare fileShare = item as FileShare; if (fileShare != null) { VisitFileShare(fileShare); return; } Certificate certificate = item as Certificate; if (certificate != null) { VisitCertificate(certificate); return; } Category category = item as Category; if (category != null) { VisitCategory(category); return; } WebAppPool webAppPool = item as WebAppPool; if (webAppPool != null) { VisitWebAppPool(webAppPool); return; } SqlString sqlString = item as SqlString; if (sqlString != null) { VisitSqlString(sqlString); return; } ServiceControl serviceControl = item as ServiceControl; if (serviceControl != null) { VisitServiceControl(serviceControl); return; } IsolateComponent isolateComponent = item as IsolateComponent; if (isolateComponent != null) { VisitIsolateComponent(isolateComponent); return; } ServiceConfig serviceConfig = item as ServiceConfig; if (serviceConfig != null) { VisitServiceConfig(serviceConfig); return; } WebProperty webProperty = item as WebProperty; if (webProperty != null) { VisitWebProperty(webProperty); return; } SqlScript sqlScript = item as SqlScript; if (sqlScript != null) { VisitSqlScript(sqlScript); return; } SqlDatabase sqlDatabase = item as SqlDatabase; if (sqlDatabase != null) { VisitSqlDatabase(sqlDatabase); return; } WebLockdown webLockdown = item as WebLockdown; if (webLockdown != null) { VisitWebLockdown(webLockdown); return; } Extension extension = item as Extension; if (extension != null) { VisitExtension(extension); return; } ReserveCost reserveCost = item as ReserveCost; if (reserveCost != null) { VisitReserveCost(reserveCost); return; } RemoveFile removeFile = item as RemoveFile; if (removeFile != null) { VisitRemoveFile(removeFile); return; } ProgId progId = item as ProgId; if (progId != null) { VisitProgId(progId); return; } Microsoft.Tools.WindowsInstallerXml.Serialize.Environment environment = item as Microsoft.Tools.WindowsInstallerXml.Serialize.Environment; if (environment != null) { VisitEnvironment(environment); return; } ServiceInstall serviceInstall = item as ServiceInstall; if (serviceInstall != null) { VisitServiceInstall(serviceInstall); return; } IniFile iniFile = item as IniFile; if (iniFile != null) { VisitIniFile(iniFile); return; } Registry registry = item as Registry; if (registry != null) { VisitRegistry(registry); return; } CreateFolder createFolder = item as CreateFolder; if (createFolder != null) { VisitCreateFolder(createFolder); return; } MIME mIME = item as MIME; if (mIME != null) { VisitMIME(mIME); return; } Verb verb = item as Verb; if (verb != null) { VisitVerb(verb); return; } }
public override int GetHashCode() { return(Clsid.GetHashCode() ^ Name.GetSafeHashCode() ^ TreatAs.GetHashCode() ^ AppID.GetHashCode() ^ TypeLib.GetHashCode() ^ Servers.Values.GetEnumHashCode() ^ Elevation.GetSafeHashCode()); }
public void UpdateTypeInfo(List <string> listOfComFile, List <string> allFiles) { foreach (var item in listOfComFile) { string filePath = allFiles.GetFilePath(item); if (File.Exists(filePath)) { string tlbFilePath = string.Format("{0}\\{1}.tlb", Path.GetDirectoryName(filePath), Path.GetFileNameWithoutExtension(filePath)); ComFileInfo fileInfo; string fileName = Path.GetFileName(filePath); ITypeLib typeLib; if (File.Exists(tlbFilePath)) { typeLib = TypeLib.GetTypeLib(tlbFilePath); } else { typeLib = TypeLib.GetTypeLib(filePath); } if (typeLib == null) { if (_allRegComFiles.TryGetValue(fileName, out fileInfo)) { fileInfo.name = fileName; _allFileComFiles.Add(fileName, fileInfo); } continue; } fileInfo = new ComFileInfo(); fileInfo.name = fileName; ComTypeLibRegInfo typeLibInfo = new ComTypeLibRegInfo(); _allFileComFiles.Add(fileInfo.name, fileInfo); IntPtr typeLibAttribPtr; typeLib.GetLibAttr(out typeLibAttribPtr); if (typeLibAttribPtr != IntPtr.Zero) { var typeLibAttrib = Marshal.PtrToStructure <System.Runtime.InteropServices.ComTypes.TYPELIBATTR>(typeLibAttribPtr); typeLibInfo.tlbid = typeLibAttrib.guid.ToString("B"); typeLibInfo.version = typeLibAttrib.wMajorVerNum.ToString(); typeLibInfo.flags = typeLibAttrib.wLibFlags.ToString(); typeLibInfo.helpdir = ""; string typelibname; string description; int dwHelpContext; string helpStr; typeLib.GetDocumentation(-1, out typelibname, out description, out dwHelpContext, out helpStr); typeLibInfo.name = typelibname; fileInfo.TypeLibInfo.Add(typeLibInfo.tlbid, typeLibInfo); } typeLib.ReleaseTLibAttr(typeLibAttribPtr); int totalNoDefined = typeLib.GetTypeInfoCount(); for (int typeIndex = 0; typeIndex < totalNoDefined; typeIndex++) { ITypeInfo typeInfo; typeLib.GetTypeInfo(typeIndex, out typeInfo); IntPtr typeAttrPtr; typeInfo.GetTypeAttr(out typeAttrPtr); if (typeAttrPtr != IntPtr.Zero) { var typeAttr = Marshal.PtrToStructure <System.Runtime.InteropServices.ComTypes.TYPEATTR>(typeAttrPtr); if (typeAttr.typekind == System.Runtime.InteropServices.ComTypes.TYPEKIND.TKIND_COCLASS) { ComClassRegInfo coClassInfo; string clsid = typeAttr.guid.ToString("B"); if (!_allRegComClasses.TryGetValue(clsid, out coClassInfo)) { coClassInfo = new ComClassRegInfo(); coClassInfo.clsid = clsid; } string className; string description; int dwHelpContext; string helpStr; typeInfo.GetDocumentation(-1, out className, out description, out dwHelpContext, out helpStr); coClassInfo.tlbid = typeLibInfo.tlbid; coClassInfo.description = description; coClassInfo.name = className; if (string.IsNullOrWhiteSpace(coClassInfo.progid)) { coClassInfo.AddProgId(string.Format("{0}.{1}", typeLibInfo.name, className)); } fileInfo.ComClassInfo.Add(clsid, coClassInfo); } else if (typeAttr.typekind == System.Runtime.InteropServices.ComTypes.TYPEKIND.TKIND_INTERFACE || typeAttr.typekind == System.Runtime.InteropServices.ComTypes.TYPEKIND.TKIND_DISPATCH) { ComInterfaceExternalProxyStubRegInfo proxyStub; string clsid = typeAttr.guid.ToString("B"); if (!_allRegComInterfaceExternalProxyStub.TryGetValue(clsid, out proxyStub)) { proxyStub = new ComInterfaceExternalProxyStubRegInfo(); proxyStub.iid = clsid; if (typeAttr.wTypeFlags == System.Runtime.InteropServices.ComTypes.TYPEFLAGS.TYPEFLAG_FDUAL || typeAttr.wTypeFlags == System.Runtime.InteropServices.ComTypes.TYPEFLAGS.TYPEFLAG_FOLEAUTOMATION) { //Just add std automation proxy proxyStub.proxyStubClsid32 = "{00020424-0000-0000-C000-000000000046}"; } } string interfaceName; string description; int dwHelpContext; string helpStr; typeInfo.GetDocumentation(-1, out interfaceName, out description, out dwHelpContext, out helpStr); proxyStub.tlbid = typeLibInfo.tlbid; proxyStub.name = interfaceName; fileInfo.InterfaceInfo.Add(clsid, proxyStub); } } typeInfo.ReleaseTypeAttr(typeAttrPtr); } } } }