Hi Jose
Can you give a bit of background on this. Is the purpose of this to allow access to a managed object in .NET? I would like to state in public that I think you are a genius and thank you so much for all your contributions!
Thanks for your compliments.
Yes, this is the purpose. The code posted demonstrates how to host the CLR, create an instance of a system class and call its methods and properties. The next step should be to explore the usage of the CreateInstanceFrom method to load an assembly from disk and create an instance of one of its classes. This will be a bit tougher to me because I will need assemblies to test and I'm not a .NET programmer.
.Net - Minimal custom class (with compile bat):
http://www.hellobasic.com/cgi-bin/forum/YaBB.pl?board=VDExamples;action=display;num=1193174377
(You don't need VWD or VS for this, just a textfile and bat file)
OLEDB stuff:
http://www.hellobasic.com/cgi-bin/forum/YaBB.pl?board=VDExamples;action=display;num=1193227199
Yes, this is very cool José. Thanks for posting an example of how to do this. You are a genius.
I'm running into a brick wall trying to create an instance of System.DateTime. Any ideas?
LOCAL oDt AS DISPATCH
oDt = pCLRHost.CreateInstance("mscorlib", "System.DateTime")
It's fairly difficult to use these kind of static classes.
also.. the .NET implementation will have an intermediate part which provides a com interface.
Several parts will therefore pretty hard to do.
One of the solutions is making use of a wrapper assembly with easier methods than the original classes.
.NET is also able to load assemblies from memory, this makes as it where static linking.
System.DateTime if not a cocreatable class, but an structure. This is a list of the ProgIDs in mscorlib:
' CLSID = {4C3EBFD5-FC72-33DC-BC37-9953EB25B8D7}
$PROGID_SystemAccessViolationExceptionAccessViolationException = "System.AccessViolationException"
' CLSID = {C03880A5-0B5E-39AD-954A-CE0DCBD5EF7D}
$PROGID_SystemAppDomainManagerAppDomainManager = "System.AppDomainManager"
' CLSID = {3E8E0F03-D3FD-3A93-BAE0-C74A6494DBCA}
$PROGID_SystemAppDomainSetupAppDomainSetup = "System.AppDomainSetup"
' CLSID = {61B3E12B-3586-3A58-A497-7ED7C4C794B9}
$PROGID_SystemAppDomainUnloadedExceptionAppDomainUnloadedException = "System.AppDomainUnloadedException"
' CLSID = {682D63B8-1692-31BE-88CD-5CB1F79EDB7B}
$PROGID_SystemApplicationExceptionApplicationException = "System.ApplicationException"
' CLSID = {3FDCEEC6-B14B-37E2-BB69-ABC7CA0DA22F}
$PROGID_SystemArgumentExceptionArgumentException = "System.ArgumentException"
' CLSID = {3BD1F243-9BC4-305D-9B1C-0D10C80329FC}
$PROGID_SystemArgumentNullExceptionArgumentNullException = "System.ArgumentNullException"
' CLSID = {74BDD0B9-38D7-3FDA-A67E-D404EE684F24}
$PROGID_SystemArgumentOutOfRangeExceptionArgumentOutOfRangeException = "System.ArgumentOutOfRangeException"
' CLSID = {647053C3-1879-34D7-AE57-67015C91FC70}
$PROGID_SystemArithmeticExceptionArithmeticException = "System.ArithmeticException"
' CLSID = {676E1164-752C-3A74-8D3F-BCD32A2026D6}
$PROGID_SystemArrayTypeMismatchExceptionArrayTypeMismatchException = "System.ArrayTypeMismatchException"
' CLSID = {E9148312-A9BF-3A45-BBCA-350967FD78F5}
$PROGID_SystemBadImageFormatExceptionBadImageFormatException = "System.BadImageFormatException"
' CLSID = {29C69707-875F-3678-8F01-283094A2DFB1}
$PROGID_SystemCannotUnloadAppDomainExceptionCannotUnloadAppDomainException = "System.CannotUnloadAppDomainException"
' CLSID = {6896B49D-7AFB-34DC-934E-5ADD38EEEE39}
$PROGID_SystemArrayListArrayList = "System.Collections.ArrayList"
' CLSID = {35E946E4-7CDA-3824-8B24-D799A96309AD}
$PROGID_SystemCaseInsensitiveComparerCaseInsensitiveComparer = "System.Collections.CaseInsensitiveComparer"
' CLSID = {47D3C68D-7D85-3227-A9E7-88451D6BADFC}
$PROGID_SystemCaseInsensitiveHashCodeProviderCaseInsensitiveHashCodeProvider = "System.Collections.CaseInsensitiveHashCodeProvider"
' CLSID = {0D52ABE3-3C93-3D94-A744-AC44850BACCD}
$PROGID_SystemKeyNotFoundExceptionKeyNotFoundException = "System.Collections.Generic.KeyNotFoundException"
' CLSID = {146855FA-309F-3D0E-BB3E-DF525F30A715}
$PROGID_SystemHashtableHashtable = "System.Collections.Hashtable"
' CLSID = {7F976B72-4B71-3858-BEE8-8E3A3189A651}
$PROGID_SystemQueueQueue = "System.Collections.Queue"
' CLSID = {026CC6D7-34B2-33D5-B551-CA31EB6CE345}
$PROGID_SystemSortedListSortedList = "System.Collections.SortedList"
' CLSID = {4599202D-460F-3FB7-8A1C-C2CC6ED6C7C8}
$PROGID_SystemStackStack = "System.Collections.Stack"
' CLSID = {CBEAA915-4D2C-3F77-98E8-A258B0FD3CEF}
$PROGID_SystemContextMarshalExceptionContextMarshalException = "System.ContextMarshalException"
' CLSID = {96705EE3-F7AB-3E9A-9FB2-AD1D536E901A}
$PROGID_SystemContextStaticAttributeContextStaticAttribute = "System.ContextStaticAttribute"
' CLSID = {AAD4BDD3-81AA-3ABC-B53B-D904D25BC01E}
$PROGID_SystemDataMisalignedExceptionDataMisalignedException = "System.DataMisalignedException"
' CLSID = {91F672A3-6B82-3E04-B2D7-BAC5D6676609}
$PROGID_SystemDebuggerDebugger = "System.Diagnostics.Debugger"
' CLSID = {41970D73-92F6-36D9-874D-3BD0762A0D6F}
$PROGID_SystemDebuggerHiddenAttributeDebuggerHiddenAttribute = "System.Diagnostics.DebuggerHiddenAttribute"
' CLSID = {29625281-51CE-3F8A-AC4D-E360CACB92E2}
$PROGID_SystemDebuggerNonUserCodeAttributeDebuggerNonUserCodeAttribute = "System.Diagnostics.DebuggerNonUserCodeAttribute"
' CLSID = {1B979846-AAEB-314B-8E63-D44EF1CB9EFC}
$PROGID_SystemDebuggerStepperBoundaryAttributeDebuggerStepperBoundaryAttribute = "System.Diagnostics.DebuggerStepperBoundaryAttribute"
' CLSID = {93F551D6-2F9E-301B-BE63-85AEF508CAE0}
$PROGID_SystemDebuggerStepThroughAttributeDebuggerStepThroughAttribute = "System.Diagnostics.DebuggerStepThroughAttribute"
' CLSID = {14910622-09D4-3B4A-8C1E-9991DBDCC553}
$PROGID_SystemStackFrameStackFrame = "System.Diagnostics.StackFrame"
' CLSID = {405C2D81-315B-3CB0-8442-EF5A38D4C3B8}
$PROGID_SystemStackTraceStackTrace = "System.Diagnostics.StackTrace"
' CLSID = {40AE2088-CE00-33AD-9320-5D201CB46FC9}
$PROGID_SystemSymDocumentTypeSymDocumentType = "System.Diagnostics.SymbolStore.SymDocumentType"
' CLSID = {5A18D43E-115B-3B8B-8245-9A06B204B717}
$PROGID_SystemSymLanguageTypeSymLanguageType = "System.Diagnostics.SymbolStore.SymLanguageType"
' CLSID = {DFD888A7-A6B0-3B1B-985E-4CDAB0E4C17D}
$PROGID_SystemSymLanguageVendorSymLanguageVendor = "System.Diagnostics.SymbolStore.SymLanguageVendor"
' CLSID = {F6914A11-D95D-324F-BA0F-39A374625290}
$PROGID_SystemDivideByZeroExceptionDivideByZeroException = "System.DivideByZeroException"
' CLSID = {46E97093-B2EC-3787-A9A5-470D1A27417C}
$PROGID_SystemDllNotFoundExceptionDllNotFoundException = "System.DllNotFoundException"
' CLSID = {CC20C6DF-A054-3F09-A5F5-A3B5A25F4CE6}
$PROGID_SystemDuplicateWaitObjectExceptionDuplicateWaitObjectException = "System.DuplicateWaitObjectException"
' CLSID = {AD326409-BF80-3E0C-BA6F-EE2C33B675A5}
$PROGID_SystemEntryPointNotFoundExceptionEntryPointNotFoundException = "System.EntryPointNotFoundException"
' CLSID = {3FB717AF-9D21-3016-871A-DF817ABDDD51}
$PROGID_SystemEventArgsEventArgs = "System.EventArgs"
' CLSID = {A1C0A095-DF97-3441-BFC1-C9F194E494DB}
$PROGID_SystemExceptionException = "System.Exception"
' CLSID = {E786FB32-B659-3D96-94C4-E1A9FC037868}
$PROGID_SystemExecutionEngineExceptionExecutionEngineException = "System.ExecutionEngineException"
' CLSID = {BDA7BEE5-85F1-3B66-B610-DDF1D5898006}
$PROGID_SystemFieldAccessExceptionFieldAccessException = "System.FieldAccessException"
' CLSID = {66CE75D4-0334-3CA6-BCA8-CE9AF28A4396}
$PROGID_SystemFlagsAttributeFlagsAttribute = "System.FlagsAttribute"
' CLSID = {964AA3BD-4B12-3E23-9D7F-99342AFAE812}
$PROGID_SystemFormatExceptionFormatException = "System.FormatException"
' CLSID = {70A738D1-1BC5-3175-BD42-603E2B82C08B}
$PROGID_SystemDateTimeFormatInfoDateTimeFormatInfo = "System.Globalization.DateTimeFormatInfo"
' CLSID = {68F8AEA9-1968-35B9-8A0E-6FDC637A4F8E}
$PROGID_SystemGregorianCalendarGregorianCalendar = "System.Globalization.GregorianCalendar"
' CLSID = {2206D773-CA1C-3258-9456-CEB7706C3710}
$PROGID_SystemHebrewCalendarHebrewCalendar = "System.Globalization.HebrewCalendar"
' CLSID = {EE832CE3-06CA-33EF-8F01-61C7C218BD7E}
$PROGID_SystemHijriCalendarHijriCalendar = "System.Globalization.HijriCalendar"
' CLSID = {374050DD-6190-3257-8812-8230BF095147}
$PROGID_SystemJapaneseCalendarJapaneseCalendar = "System.Globalization.JapaneseCalendar"
' CLSID = {5C3E6CE8-B218-3762-883C-91BC987CDC2D}
$PROGID_SystemJulianCalendarJulianCalendar = "System.Globalization.JulianCalendar"
' CLSID = {1A06A4DC-E239-3717-89E1-D0683F3A5320}
$PROGID_SystemKoreanCalendarKoreanCalendar = "System.Globalization.KoreanCalendar"
' CLSID = {146A47AB-A2CF-3587-BB25-2B286D7566B4}
$PROGID_SystemNumberFormatInfoNumberFormatInfo = "System.Globalization.NumberFormatInfo"
' CLSID = {31C967B5-2F8A-3957-9C6D-34A0731DB36C}
$PROGID_SystemStringInfoStringInfo = "System.Globalization.StringInfo"
' CLSID = {769B8B68-64F7-3B61-B744-160A9FCC3216}
$PROGID_SystemTaiwanCalendarTaiwanCalendar = "System.Globalization.TaiwanCalendar"
' CLSID = {EC3DAC94-DF80-3017-B381-B13DCED6C4D8}
$PROGID_SystemThaiBuddhistCalendarThaiBuddhistCalendar = "System.Globalization.ThaiBuddhistCalendar"
' CLSID = {5CA9971B-2DC3-3BC8-847A-5E6D15CBB16E}
$PROGID_SystemIndexOutOfRangeExceptionIndexOutOfRangeException = "System.IndexOutOfRangeException"
' CLSID = {7F6BCBE5-EB30-370B-9F1B-92A6265AFEDD}
$PROGID_SystemInvalidCastExceptionInvalidCastException = "System.InvalidCastException"
' CLSID = {9546306B-1B68-33AF-80DB-3A9206501515}
$PROGID_SystemInvalidOperationExceptionInvalidOperationException = "System.InvalidOperationException"
' CLSID = {91591469-EFEF-3D63-90F9-88520F0AA1EF}
$PROGID_SystemInvalidProgramExceptionInvalidProgramException = "System.InvalidProgramException"
' CLSID = {8833BC41-DC6B-34B9-A799-682D2554F02F}
$PROGID_SystemDirectoryNotFoundExceptionDirectoryNotFoundException = "System.IO.DirectoryNotFoundException"
' CLSID = {A8F9F740-70C9-30A7-937C-59785A9BB5A4}
$PROGID_SystemDriveNotFoundExceptionDriveNotFoundException = "System.IO.DriveNotFoundException"
' CLSID = {58D052BC-A3DF-3508-AC95-FF297BDC9F0C}
$PROGID_SystemEndOfStreamExceptionEndOfStreamException = "System.IO.EndOfStreamException"
' CLSID = {AF8C5F8A-9999-3E92-BB41-C5F4955174CD}
$PROGID_SystemFileLoadExceptionFileLoadException = "System.IO.FileLoadException"
' CLSID = {48C6E96F-A2F3-33E7-BA7F-C8F74866760B}
$PROGID_SystemFileNotFoundExceptionFileNotFoundException = "System.IO.FileNotFoundException"
' CLSID = {A164C0BF-67AE-3C7E-BC05-BFE24A8CDB62}
$PROGID_SystemIOExceptionIOException = "System.IO.IOException"
' CLSID = {4479C009-4CC3-39A2-8F92-DFCDF034F748}
$PROGID_SystemIsolatedStorageExceptionIsolatedStorageException = "System.IO.IsolatedStorage.IsolatedStorageException"
' CLSID = {F5E692D9-8A87-349D-9657-F96E5799D2F4}
$PROGID_SystemMemoryStreamMemoryStream = "System.IO.MemoryStream"
' CLSID = {C016A313-9606-36D3-A823-33EBF5006189}
$PROGID_SystemPathTooLongExceptionPathTooLongException = "System.IO.PathTooLongException"
' CLSID = {27F31D55-D6C6-3676-9D42-C40F3A918636}
$PROGID_SystemStringWriterStringWriter = "System.IO.StringWriter"
' CLSID = {0FF66430-C796-3EE7-902B-166C402CA288}
$PROGID_SystemMemberAccessExceptionMemberAccessException = "System.MemberAccessException"
' CLSID = {92E76A74-2622-3AA9-A3CA-1AE8BD7BC4A8}
$PROGID_SystemMethodAccessExceptionMethodAccessException = "System.MethodAccessException"
' CLSID = {8D36569B-14D6-3C3D-B55C-9D02A45BFC3D}
$PROGID_SystemMissingFieldExceptionMissingFieldException = "System.MissingFieldException"
' CLSID = {CDC70043-D56B-3799-B7BD-6113BBCA160A}
$PROGID_SystemMissingMemberExceptionMissingMemberException = "System.MissingMemberException"
' CLSID = {58897D76-EF6C-327A-93F7-6CD66C424E11}
$PROGID_SystemMissingMethodExceptionMissingMethodException = "System.MissingMethodException"
' CLSID = {B406AC70-4D7E-3D24-B241-AEAEAC343BD9}
$PROGID_SystemMTAThreadAttributeMTAThreadAttribute = "System.MTAThreadAttribute"
' CLSID = {9DA2F8B8-59F0-3852-B509-0663E3BF643B}
$PROGID_SystemMulticastNotSupportedExceptionMulticastNotSupportedException = "System.MulticastNotSupportedException"
' CLSID = {CC77F5F3-222D-3586-88C3-410477A3B65D}
$PROGID_SystemNonSerializedAttributeNonSerializedAttribute = "System.NonSerializedAttribute"
' CLSID = {7E34AB89-0684-3B86-8A0F-E638EB4E6252}
$PROGID_SystemNotFiniteNumberExceptionNotFiniteNumberException = "System.NotFiniteNumberException"
' CLSID = {F8BE2AD5-4E99-3E00-B10E-7C54D31C1C1D}
$PROGID_SystemNotImplementedExceptionNotImplementedException = "System.NotImplementedException"
' CLSID = {DAFB2462-2A5B-3818-B17E-602984FE1BB0}
$PROGID_SystemNotSupportedExceptionNotSupportedException = "System.NotSupportedException"
' CLSID = {7F71DB2D-1EA0-3CAE-8087-26095F5215E6}
$PROGID_SystemNullReferenceExceptionNullReferenceException = "System.NullReferenceException"
' CLSID = {81C5FE01-027C-3E1C-98D5-DA9C9862AA21}
$PROGID_SystemObjectObject = "System.Object"
' CLSID = {08295C62-7462-3633-B35E-7AE68ACA3948}
$PROGID_SystemObsoleteAttributeObsoleteAttribute = "System.ObsoleteAttribute"
' CLSID = {11581718-2434-32E3-B559-E86CE9923744}
$PROGID_SystemOperationCanceledExceptionOperationCanceledException = "System.OperationCanceledException"
' CLSID = {CCF306AE-33BD-3003-9CCE-DAF5BEFEF611}
$PROGID_SystemOutOfMemoryExceptionOutOfMemoryException = "System.OutOfMemoryException"
' CLSID = {4286FA72-A2FA-3245-8751-D4206070A191}
$PROGID_SystemOverflowExceptionOverflowException = "System.OverflowException"
' CLSID = {3495E5FA-2A90-3CA7-B3B5-58736C4441DD}
$PROGID_SystemParamArrayAttributeParamArrayAttribute = "System.ParamArrayAttribute"
' CLSID = {A36738B5-FA8F-3316-A929-68099A32B43B}
$PROGID_SystemPlatformNotSupportedExceptionPlatformNotSupportedException = "System.PlatformNotSupportedException"
' CLSID = {4E77EC8F-51D8-386C-85FE-7DC931B7A8E7}
$PROGID_SystemRandomRandom = "System.Random"
' CLSID = {C9F61CBD-287F-3D24-9FEB-2C3F347CF570}
$PROGID_SystemRankExceptionRankException = "System.RankException"
' CLSID = {2846AE5E-A9FA-36CF-B2D1-6E95596DBDE7}
$PROGID_SystemAmbiguousMatchExceptionAmbiguousMatchException = "System.Reflection.AmbiguousMatchException"
' CLSID = {F12FDE6A-9394-3C32-8E4D-F3D470947284}
$PROGID_SystemAssemblyNameAssemblyName = "System.Reflection.AssemblyName"
' CLSID = {3F4A4283-6A08-3E90-A976-2C2D3BE4EB0B}
$PROGID_SystemAssemblyNameProxyAssemblyNameProxy = "System.Reflection.AssemblyNameProxy"
' CLSID = {D5CB383D-99F4-3C7E-A9C3-85B53661448F}
$PROGID_SystemCustomAttributeFormatExceptionCustomAttributeFormatException = "System.Reflection.CustomAttributeFormatException"
' CLSID = {7B938A6F-77BF-351C-A712-69483C91115D}
$PROGID_SystemInvalidFilterCriteriaExceptionInvalidFilterCriteriaException = "System.Reflection.InvalidFilterCriteriaException"
' CLSID = {93D11DE9-5F6C-354A-A7C5-16CCCA64A9B8}
$PROGID_SystemObfuscationAttributeObfuscationAttribute = "System.Reflection.ObfuscationAttribute"
' CLSID = {0D23F8B4-F2A6-3EFF-9D37-BDF79AC6B440}
$PROGID_SystemTargetExceptionTargetException = "System.Reflection.TargetException"
' CLSID = {DA317BE2-1A0D-37B3-83F2-A0F32787FC67}
$PROGID_SystemTargetParameterCountExceptionTargetParameterCountException = "System.Reflection.TargetParameterCountException"
' CLSID = {726BBDF4-6C6D-30F4-B3A0-F14D6AEC08C7}
$PROGID_SystemMissingManifestResourceExceptionMissingManifestResourceException = "System.Resources.MissingManifestResourceException"
' CLSID = {D41969A6-C394-34B9-BD24-DD408F39F261}
$PROGID_SystemMissingSatelliteAssemblyExceptionMissingSatelliteAssemblyException = "System.Resources.MissingSatelliteAssemblyException"
' CLSID = {A3A1F076-1FA7-3A26-886D-8841CB45382F}
$PROGID_SystemCallConvCdeclCallConvCdecl = "System.Runtime.CompilerServices.CallConvCdecl"
' CLSID = {ED0BC45C-2438-31A9-BBB6-E2A3B5916419}
$PROGID_SystemCallConvFastcallCallConvFastcall = "System.Runtime.CompilerServices.CallConvFastcall"
' CLSID = {BCB67D4D-2096-36BE-974C-A003FC95041B}
$PROGID_SystemCallConvStdcallCallConvStdcall = "System.Runtime.CompilerServices.CallConvStdcall"
' CLSID = {46080CA7-7CB8-3A55-A72E-8E50ECA4D4FC}
$PROGID_SystemCallConvThiscallCallConvThiscall = "System.Runtime.CompilerServices.CallConvThiscall"
' CLSID = {4B601364-A04B-38BC-BD38-A18E981324CF}
$PROGID_SystemCompilerGlobalScopeAttributeCompilerGlobalScopeAttribute = "System.Runtime.CompilerServices.CompilerGlobalScopeAttribute"
' CLSID = {837A6733-1675-3BC9-BBF8-13889F84DAF4}
$PROGID_SystemDiscardableAttributeDiscardableAttribute = "System.Runtime.CompilerServices.DiscardableAttribute"
' CLSID = {E947A0B0-D47F-3AA3-9B77-4624E0F3ACA4}
$PROGID_SystemIDispatchConstantAttributeIDispatchConstantAttribute = "System.Runtime.CompilerServices.IDispatchConstantAttribute"
' CLSID = {590E4A07-DAFC-3BE7-A178-DA349BBA980B}
$PROGID_SystemIUnknownConstantAttributeIUnknownConstantAttribute = "System.Runtime.CompilerServices.IUnknownConstantAttribute"
' CLSID = {48D0CFE7-3128-3D2C-A5B5-8C7B82B4AB4F}
$PROGID_SystemMethodImplAttributeMethodImplAttribute = "System.Runtime.CompilerServices.MethodImplAttribute"
' CLSID = {C437AB2E-865B-321D-BA15-0C8EC4CA119B}
$PROGID_SystemNativeCppClassAttributeNativeCppClassAttribute = "System.Runtime.CompilerServices.NativeCppClassAttribute"
' CLSID = {1D09B407-A97F-378A-ACCB-82CA0082F9F3}
$PROGID_SystemApplicationActivatorApplicationActivator = "System.Runtime.Hosting.ApplicationActivator"
' CLSID = {8A3FD229-B2A9-347F-93D2-87F3B7F92753}
$PROGID_SystemComConversionLossAttributeComConversionLossAttribute = "System.Runtime.InteropServices.ComConversionLossAttribute"
' CLSID = {07F94112-A42E-328B-B508-702EF62BCC29}
$PROGID_SystemCOMExceptionCOMException = "System.Runtime.InteropServices.COMException"
' CLSID = {F1EBA909-6621-346D-9CE2-39F266C9D011}
$PROGID_SystemComImportAttributeComImportAttribute = "System.Runtime.InteropServices.ComImportAttribute"
' CLSID = {630A3EF1-23C6-31FE-9D25-294E3B3E7486}
$PROGID_SystemComRegisterFunctionAttributeComRegisterFunctionAttribute = "System.Runtime.InteropServices.ComRegisterFunctionAttribute"
' CLSID = {8F45C7FF-1E6E-34C1-A7CC-260985392A05}
$PROGID_SystemComUnregisterFunctionAttributeComUnregisterFunctionAttribute = "System.Runtime.InteropServices.ComUnregisterFunctionAttribute"
' CLSID = {AFC681CF-E82F-361A-8280-CF4E1F844C3E}
$PROGID_SystemExternalExceptionExternalException = "System.Runtime.InteropServices.ExternalException"
' CLSID = {96A058CD-FAF7-386C-85BF-E47F00C81795}
$PROGID_SystemInAttributeInAttribute = "System.Runtime.InteropServices.InAttribute"
' CLSID = {A7248EC6-A8A5-3D07-890E-6107F8C247E5}
$PROGID_SystemInvalidComObjectExceptionInvalidComObjectException = "System.Runtime.InteropServices.InvalidComObjectException"
' CLSID = {9A944885-EDAF-3A81-A2FF-6A9D5D1ABFC7}
$PROGID_SystemInvalidOleVariantTypeExceptionInvalidOleVariantTypeException = "System.Runtime.InteropServices.InvalidOleVariantTypeException"
' CLSID = {742AD1FB-B2F0-3681-B4AA-E736A3BCE4E1}
$PROGID_SystemMarshalDirectiveExceptionMarshalDirectiveException = "System.Runtime.InteropServices.MarshalDirectiveException"
' CLSID = {B81CB5ED-E654-399F-9698-C83C50665786}
$PROGID_SystemOptionalAttributeOptionalAttribute = "System.Runtime.InteropServices.OptionalAttribute"
' CLSID = {FDB2DC94-B5A0-3702-AE84-BBFA752ACB36}
$PROGID_SystemOutAttributeOutAttribute = "System.Runtime.InteropServices.OutAttribute"
' CLSID = {204D5A28-46A0-3F04-BD7C-B5672631E57F}
$PROGID_SystemPreserveSigAttributePreserveSigAttribute = "System.Runtime.InteropServices.PreserveSigAttribute"
' CLSID = {475E398F-8AFA-43A7-A3BE-F4EF8D6787C9}
$PROGID_SystemRegistrationServicesRegistrationServices = "System.Runtime.InteropServices.RegistrationServices"
' CLSID = {78D22140-40CF-303E-BE96-B3AC0407A34D}
$PROGID_SystemRuntimeEnvironmentRuntimeEnvironment = "System.Runtime.InteropServices.RuntimeEnvironment"
' CLSID = {4BE89AC3-603D-36B2-AB9B-9C38866F56D5}
$PROGID_SystemSafeArrayRankMismatchExceptionSafeArrayRankMismatchException = "System.Runtime.InteropServices.SafeArrayRankMismatchException"
' CLSID = {2D5EC63C-1B3E-3EE4-9052-EB0D0303549C}
$PROGID_SystemSafeArrayTypeMismatchExceptionSafeArrayTypeMismatchException = "System.Runtime.InteropServices.SafeArrayTypeMismatchException"
' CLSID = {CA805B13-468C-3A22-BF9A-818E97EFA6B7}
$PROGID_SystemSEHExceptionSEHException = "System.Runtime.InteropServices.SEHException"
' CLSID = {9D309F77-4655-372E-84B0-B0FB4030F3B8}
$PROGID_SystemSetWin32ContextInIDispatchAttributeSetWin32ContextInIDispatchAttribute = "System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute"
' CLSID = {F1C3BF79-C3E4-11D3-88E7-00902754C43A}
$PROGID_SystemTypeLibConverterTypeLibConverter = "System.Runtime.InteropServices.TypeLibConverter"
' CLSID = {DD5856E5-8151-3334-B8E9-07CB152B20A4}
$PROGID_SystemClientChannelSinkStackClientChannelSinkStack = "System.Runtime.Remoting.Channels.ClientChannelSinkStack"
' CLSID = {5C35F099-165E-3225-A3A5-564150EA17F5}
$PROGID_SystemServerChannelSinkStackServerChannelSinkStack = "System.Runtime.Remoting.Channels.ServerChannelSinkStack"
' CLSID = {48728B3F-F7D9-36C1-B3E7-8BF2E63CE1B3}
$PROGID_SystemTransportHeadersTransportHeaders = "System.Runtime.Remoting.Channels.TransportHeaders"
' CLSID = {A36E4EAF-EA3F-30A6-906D-374BBF7903B1}
$PROGID_SystemContextContext = "System.Runtime.Remoting.Contexts.Context"
' CLSID = {5520B6D3-6EC6-3CE7-958B-E69FAF6EFF99}
$PROGID_SystemSynchronizationAttributeSynchronizationAttribute = "System.Runtime.Remoting.Contexts.SynchronizationAttribute"
' CLSID = {53A3C917-BB24-3908-B58B-09ECDA99265F}
$PROGID_SystemInternalRemotingServicesInternalRemotingServices = "System.Runtime.Remoting.InternalRemotingServices"
' CLSID = {FD8C8FCE-4F85-36B2-B8E8-F5A183654539}
$PROGID_SystemClientSponsorClientSponsor = "System.Runtime.Remoting.Lifetime.ClientSponsor"
' CLSID = {8FD730C1-DD1B-3694-84A1-8CE7159E266B}
$PROGID_SystemLifetimeServicesLifetimeServices = "System.Runtime.Remoting.Lifetime.LifetimeServices"
' CLSID = {C30ABD41-7B5A-3D10-A6EF-56862E2979B6}
$PROGID_SystemOneWayAttributeOneWayAttribute = "System.Runtime.Remoting.Messaging.OneWayAttribute"
' CLSID = {24EEC005-3938-3C71-821D-7F68FD850B2D}
$PROGID_SystemRemotingSurrogateSelectorRemotingSurrogateSelector = "System.Runtime.Remoting.Messaging.RemotingSurrogateSelector"
' CLSID = {9B924EC5-BF13-3A98-8AC0-80877995D403}
$PROGID_SystemSoapAttributeSoapAttribute = "System.Runtime.Remoting.Metadata.SoapAttribute"
' CLSID = {5B76534C-3ACC-3D52-AA61-D788B134ABE2}
$PROGID_SystemSoapFieldAttributeSoapFieldAttribute = "System.Runtime.Remoting.Metadata.SoapFieldAttribute"
' CLSID = {01FF4E4B-8AD0-3171-8C82-5C2F48B87E3D}
$PROGID_SystemSoapMethodAttributeSoapMethodAttribute = "System.Runtime.Remoting.Metadata.SoapMethodAttribute"
' CLSID = {C76B435D-86C2-30FD-9329-E2603246095C}
$PROGID_SystemSoapParameterAttributeSoapParameterAttribute = "System.Runtime.Remoting.Metadata.SoapParameterAttribute"
' CLSID = {9C67F424-22DC-3D05-AB36-17EAF95881F2}
$PROGID_SystemSoapTypeAttributeSoapTypeAttribute = "System.Runtime.Remoting.Metadata.SoapTypeAttribute"
' CLSID = {CDFA7117-B2A4-3A3F-B393-BC19D44F9749}
$PROGID_SystemSoapAnyUriSoapAnyUri = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapAnyUri"
' CLSID = {F59D514C-F200-319F-BF3F-9E4E23B2848C}
$PROGID_SystemSoapBase64BinarySoapBase64Binary = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapBase64Binary"
' CLSID = {48AD62E8-BD40-37F4-8FD7-F7A17478A8E6}
$PROGID_SystemSoapDateTimeSoapDateTime = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime"
' CLSID = {C9F0A842-3CE1-338F-A1D4-6D7BB397BDAA}
$PROGID_SystemSoapDaySoapDay = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDay"
' CLSID = {DE47D9CF-0107-3D66-93E9-A8ACB06B4583}
$PROGID_SystemSoapDurationSoapDuration = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDuration"
' CLSID = {9A3A64F4-8BA5-3DCF-880C-8D3EE06C5538}
$PROGID_SystemSoapEntitiesSoapEntities = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntities"
' CLSID = {F00CA7A7-4B8D-3F2F-A5F2-CE4A4478B39C}
$PROGID_SystemSoapEntitySoapEntity = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntity"
' CLSID = {8C1425C9-A7D3-35CD-8248-928CA52AD49B}
$PROGID_SystemSoapHexBinarySoapHexBinary = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary"
' CLSID = {2763BE6B-F8CF-39D9-A2E8-9E9815C0815E}
$PROGID_SystemSoapIdrefsSoapIdrefs = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdrefs"
' CLSID = {09A60795-31C0-3A79-9250-8D93C74FE540}
$PROGID_SystemSoapIntegerSoapInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapInteger"
' CLSID = {84F70B6C-D59E-394A-B879-FFCC30DDCAA2}
$PROGID_SystemSoapLanguageSoapLanguage = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapLanguage"
' CLSID = {463AE13F-C7E5-357E-A41C-DF8762FFF85C}
$PROGID_SystemSoapMonthDaySoapMonthDay = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonthDay"
' CLSID = {4E515531-7A71-3CDD-8078-0A01C85C8F9D}
$PROGID_SystemSoapNameSoapName = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapName"
' CLSID = {D13B741D-051F-322F-93AA-1367A3C8AAFB}
$PROGID_SystemSoapNcNameSoapNcName = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNcName"
' CLSID = {C41D0B30-A518-3093-A18F-364AF9E71EB7}
$PROGID_SystemSoapNegativeIntegerSoapNegativeInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNegativeInteger"
' CLSID = {C498F2D9-A77C-3D4B-A1A5-12CC7B99115D}
$PROGID_SystemSoapNmtokenSoapNmtoken = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtoken"
' CLSID = {14BE6B21-C682-3A3A-8B24-FEE75B4FF8C5}
$PROGID_SystemSoapNmtokensSoapNmtokens = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtokens"
' CLSID = {6850404F-D7FB-32BD-8328-C94F66E8C1C7}
$PROGID_SystemSoapNonNegativeIntegerSoapNonNegativeInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonNegativeInteger"
' CLSID = {2BB6C5E0-C2B9-3608-8868-21CFD6DDB91E}
$PROGID_SystemSoapNonPositiveIntegerSoapNonPositiveInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonPositiveInteger"
' CLSID = {0E71F9BD-C109-3352-BD60-14F96D56B6F3}
$PROGID_SystemSoapNormalizedStringSoapNormalizedString = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNormalizedString"
' CLSID = {B54E38F8-17FF-3D0A-9FF3-5E662DE2055F}
$PROGID_SystemSoapNotationSoapNotation = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNotation"
' CLSID = {7B769B29-35F0-3BDC-AAE9-E99937F6CDEC}
$PROGID_SystemSoapPositiveIntegerSoapPositiveInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapPositiveInteger"
' CLSID = {D8A4F3EB-E7EC-3620-831A-B052A67C9944}
$PROGID_SystemSoapQNameSoapQName = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapQName"
' CLSID = {D049DC2B-82C3-3350-A1CC-BF69FEE3825E}
$PROGID_SystemSoapTimeSoapTime = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapTime"
' CLSID = {777F668E-3272-39CD-A8B5-860935A35181}
$PROGID_SystemSoapTokenSoapToken = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapToken"
' CLSID = {A7136BDF-B141-3913-9D1C-9BC5AFF21470}
$PROGID_SystemSoapYearMonthSoapYearMonth = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYearMonth"
' CLSID = {21F5A790-53EA-3D73-86C3-A5BA6CF65FE9}
$PROGID_SystemObjRefObjRef = "System.Runtime.Remoting.ObjRef"
' CLSID = {1163D0CA-2A02-37C1-BF3F-A9B9E9D49245}
$PROGID_SystemProxyAttributeProxyAttribute = "System.Runtime.Remoting.Proxies.ProxyAttribute"
' CLSID = {24540EBC-316E-35D2-80DB-8A535CAF6A35}
$PROGID_SystemRemotingExceptionRemotingException = "System.Runtime.Remoting.RemotingException"
' CLSID = {3CDED51A-86B4-39F0-A12A-5D1FDCED6546}
$PROGID_SystemRemotingTimeoutExceptionRemotingTimeoutException = "System.Runtime.Remoting.RemotingTimeoutException"
' CLSID = {DB13821E-9835-3958-8539-1E021399AB6C}
$PROGID_SystemServerExceptionServerException = "System.Runtime.Remoting.ServerException"
' CLSID = {BC5062B6-79E8-3F19-A87E-F9DAF826960C}
$PROGID_SystemEnterpriseServicesHelperEnterpriseServicesHelper = "System.Runtime.Remoting.Services.EnterpriseServicesHelper"
' CLSID = {E822F35C-DDC2-3FB2-9768-A2AEBCED7C40}
$PROGID_SystemTrackingServicesTrackingServices = "System.Runtime.Remoting.Services.TrackingServices"
' CLSID = {D23D2F41-1D69-3E03-A275-32AE381223AC}
$PROGID_SystemFormatterConverterFormatterConverter = "System.Runtime.Serialization.FormatterConverter"
' CLSID = {50369004-DB9A-3A75-BE7A-1D0EF017B9D3}
$PROGID_SystemBinaryFormatterBinaryFormatter = "System.Runtime.Serialization.Formatters.Binary.BinaryFormatter"
' CLSID = {CF8F7FCF-94FE-3516-90E9-C103156DD2D5}
$PROGID_SystemInternalRMInternalRM = "System.Runtime.Serialization.Formatters.InternalRM"
' CLSID = {A8D058C4-D923-3859-9490-D3888FC90439}
$PROGID_SystemSoapFaultSoapFault = "System.Runtime.Serialization.Formatters.SoapFault"
' CLSID = {E772BBE6-CB52-3C19-876A-D1BFA2305F4E}
$PROGID_SystemSoapMessageSoapMessage = "System.Runtime.Serialization.Formatters.SoapMessage"
' CLSID = {4F272C37-F0A8-350C-867B-2C03B2B16B80}
$PROGID_SystemObjectIDGeneratorObjectIDGenerator = "System.Runtime.Serialization.ObjectIDGenerator"
' CLSID = {18B1C7EE-68E3-35BB-9E40-469A223285F7}
$PROGID_SystemOnDeserializedAttributeOnDeserializedAttribute = "System.Runtime.Serialization.OnDeserializedAttribute"
' CLSID = {30AC0B94-3BDB-3199-8A5D-ECA0C5458381}
$PROGID_SystemOnDeserializingAttributeOnDeserializingAttribute = "System.Runtime.Serialization.OnDeserializingAttribute"
' CLSID = {6F8527BF-5AAD-3236-B639-A05177332EFE}
$PROGID_SystemOnSerializedAttributeOnSerializedAttribute = "System.Runtime.Serialization.OnSerializedAttribute"
' CLSID = {9BF86F6E-B0E1-348B-9627-6970672EB3D3}
$PROGID_SystemOnSerializingAttributeOnSerializingAttribute = "System.Runtime.Serialization.OnSerializingAttribute"
' CLSID = {1C97EF1D-74ED-3D21-84A4-8631D959634A}
$PROGID_SystemOptionalFieldAttributeOptionalFieldAttribute = "System.Runtime.Serialization.OptionalFieldAttribute"
' CLSID = {57154C7C-EDB2-3BFD-A8BA-924C60913EBF}
$PROGID_SystemSerializationExceptionSerializationException = "System.Runtime.Serialization.SerializationException"
' CLSID = {88C8A919-EB24-3CCA-84F7-2EA82BB3F3ED}
$PROGID_SystemSurrogateSelectorSurrogateSelector = "System.Runtime.Serialization.SurrogateSelector"
' CLSID = {5610F042-FF1D-36D0-996C-68F7A207D1F0}
$PROGID_SystemAllowPartiallyTrustedCallersAttributeAllowPartiallyTrustedCallersAttribute = "System.Security.AllowPartiallyTrustedCallersAttribute"
' CLSID = {9EA60ECA-3DCD-340F-8E95-67845D185999}
$PROGID_SystemCryptoConfigCryptoConfig = "System.Security.Cryptography.CryptoConfig"
' CLSID = {7F8C7DC5-D8B4-3758-981F-02AF6B42461A}
$PROGID_SystemCryptographicExceptionCryptographicException = "System.Security.Cryptography.CryptographicException"
' CLSID = {C41FA05C-8A7A-3157-8166-4104BB4925BA}
$PROGID_SystemCryptographicUnexpectedOperationExceptionCryptographicUnexpectedOperationException = "System.Security.Cryptography.CryptographicUnexpectedOperationException"
' CLSID = {AF60343F-6C7B-3761-839F-0C44E3CA06DA}
$PROGID_SystemCspParametersCspParameters = "System.Security.Cryptography.CspParameters"
' CLSID = {B6EB52D5-BB1C-3380-8BCA-345FF43F4B04}
$PROGID_SystemDESCryptoServiceProviderDESCryptoServiceProvider = "System.Security.Cryptography.DESCryptoServiceProvider"
' CLSID = {673DFE75-9F93-304F-ABA8-D2A86BA87D7C}
$PROGID_SystemDSACryptoServiceProviderDSACryptoServiceProvider = "System.Security.Cryptography.DSACryptoServiceProvider"
' CLSID = {1F17C39C-99D5-37E0-8E98-8F27044BD50A}
$PROGID_SystemDSASignatureDeformatterDSASignatureDeformatter = "System.Security.Cryptography.DSASignatureDeformatter"
' CLSID = {8F6D198C-E66F-3A87-AA3F-F885DD09EA13}
$PROGID_SystemDSASignatureFormatterDSASignatureFormatter = "System.Security.Cryptography.DSASignatureFormatter"
' CLSID = {C1ABB475-F198-39D5-BF8D-330BC7189661}
$PROGID_SystemFromBase64TransformFromBase64Transform = "System.Security.Cryptography.FromBase64Transform"
' CLSID = {A7EDDCB5-6043-3988-921C-25E3DEE6322B}
$PROGID_SystemHMACMD5HMACMD5 = "System.Security.Cryptography.HMACMD5"
' CLSID = {20051D1B-321F-3E4D-A3DA-5FBE892F7EC5}
$PROGID_SystemHMACRIPEMD160HMACRIPEMD160 = "System.Security.Cryptography.HMACRIPEMD160"
' CLSID = {00B01B2E-B1FE-33A6-AD40-57DE8358DC7D}
$PROGID_SystemHMACSHA1HMACSHA1 = "System.Security.Cryptography.HMACSHA1"
' CLSID = {2C314899-8F99-3041-A49D-2F6AFC0E6296}
$PROGID_SystemHMACSHA256HMACSHA256 = "System.Security.Cryptography.HMACSHA256"
' CLSID = {AE53ED01-CAB4-39CE-854A-8BF544EEEC35}
$PROGID_SystemHMACSHA384HMACSHA384 = "System.Security.Cryptography.HMACSHA384"
' CLSID = {477A7D8E-8D26-3959-88F6-F6AB7E7F50CF}
$PROGID_SystemHMACSHA512HMACSHA512 = "System.Security.Cryptography.HMACSHA512"
' CLSID = {39B68485-6773-3C46-82E9-56D8F0B4570C}
$PROGID_SystemMACTripleDESMACTripleDES = "System.Security.Cryptography.MACTripleDES"
' CLSID = {D2548BF2-801A-36AF-8800-1F11FBF54361}
$PROGID_SystemMD5CryptoServiceProviderMD5CryptoServiceProvider = "System.Security.Cryptography.MD5CryptoServiceProvider"
' CLSID = {7AE844F0-ECA8-3F15-AE27-AFA21A2AA6F8}
$PROGID_SystemPKCS1MaskGenerationMethodPKCS1MaskGenerationMethod = "System.Security.Cryptography.PKCS1MaskGenerationMethod"
' CLSID = {62E92675-CB77-3FC9-8597-1A81A5F18013}
$PROGID_SystemRC2CryptoServiceProviderRC2CryptoServiceProvider = "System.Security.Cryptography.RC2CryptoServiceProvider"
' CLSID = {1F9F18A3-EFC0-3913-84A5-90678A4A9A80}
$PROGID_SystemRijndaelManagedRijndaelManaged = "System.Security.Cryptography.RijndaelManaged"
' CLSID = {3D367908-928F-3C13-8B93-5E1718820F6D}
$PROGID_SystemRIPEMD160ManagedRIPEMD160Managed = "System.Security.Cryptography.RIPEMD160Managed"
' CLSID = {40031115-09D2-3851-A13F-56930BE48038}
$PROGID_SystemRNGCryptoServiceProviderRNGCryptoServiceProvider = "System.Security.Cryptography.RNGCryptoServiceProvider"
' CLSID = {D9035152-6B1F-33E3-86F4-411CD21CDE0E}
$PROGID_SystemRSACryptoServiceProviderRSACryptoServiceProvider = "System.Security.Cryptography.RSACryptoServiceProvider"
' CLSID = {4D187AC2-D815-3B7E-BCEA-8E0BBC702F7C}
$PROGID_SystemRSAOAEPKeyExchangeDeformatterRSAOAEPKeyExchangeDeformatter = "System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter"
' CLSID = {A0E2E749-63CE-3651-8F4F-F5F996344C32}
$PROGID_SystemRSAOAEPKeyExchangeFormatterRSAOAEPKeyExchangeFormatter = "System.Security.Cryptography.RSAOAEPKeyExchangeFormatter"
' CLSID = {EE96F4E1-377E-315C-AEF5-874DC8C7A2AA}
$PROGID_SystemRSAPKCS1KeyExchangeDeformatterRSAPKCS1KeyExchangeDeformatter = "System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter"
' CLSID = {92755472-2059-3F96-8938-8AC767B5187B}
$PROGID_SystemRSAPKCS1KeyExchangeFormatterRSAPKCS1KeyExchangeFormatter = "System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter"
' CLSID = {6F674828-9081-3B45-BC39-791BD84CCF8F}
$PROGID_SystemRSAPKCS1SignatureDeformatterRSAPKCS1SignatureDeformatter = "System.Security.Cryptography.RSAPKCS1SignatureDeformatter"
' CLSID = {7BC115CD-1EE2-3068-894D-E3D3F7632F40}
$PROGID_SystemRSAPKCS1SignatureFormatterRSAPKCS1SignatureFormatter = "System.Security.Cryptography.RSAPKCS1SignatureFormatter"
' CLSID = {FC13A7D5-E2B3-37BA-B807-7FA6238284D5}
$PROGID_SystemSHA1CryptoServiceProviderSHA1CryptoServiceProvider = "System.Security.Cryptography.SHA1CryptoServiceProvider"
' CLSID = {FDF9C30D-CCAB-3E2D-B584-9E24CE8038E3}
$PROGID_SystemSHA1ManagedSHA1Managed = "System.Security.Cryptography.SHA1Managed"
' CLSID = {44181B13-AE94-3CFB-81D1-37DB59145030}
$PROGID_SystemSHA256ManagedSHA256Managed = "System.Security.Cryptography.SHA256Managed"
' CLSID = {7FD3958D-0A14-3001-8074-0D15EAD7F05C}
$PROGID_SystemSHA384ManagedSHA384Managed = "System.Security.Cryptography.SHA384Managed"
' CLSID = {A6673C32-3943-3BBB-B476-C09A0EC0BCD6}
$PROGID_SystemSHA512ManagedSHA512Managed = "System.Security.Cryptography.SHA512Managed"
' CLSID = {3FA7A1C5-812C-3B56-B957-CB14AF670C09}
$PROGID_SystemSignatureDescriptionSignatureDescription = "System.Security.Cryptography.SignatureDescription"
' CLSID = {5F3A0F8D-5EF9-3AD5-94E0-53AFF8BCE960}
$PROGID_SystemToBase64TransformToBase64Transform = "System.Security.Cryptography.ToBase64Transform"
' CLSID = {DAA132BF-1170-3D8B-A0EF-E2F55A68A91D}
$PROGID_SystemTripleDESCryptoServiceProviderTripleDESCryptoServiceProvider = "System.Security.Cryptography.TripleDESCryptoServiceProvider"
' CLSID = {4C69C54F-9824-38CC-8387-A22DC67E0BAB}
$PROGID_SystemX509CertificateX509Certificate = "System.Security.Cryptography.X509Certificates.X509Certificate"
' CLSID = {ECC82A10-B731-3A01-8A17-AC0DDD7666CF}
$PROGID_SystemHostProtectionExceptionHostProtectionException = "System.Security.HostProtectionException"
' CLSID = {84589833-40D7-36E2-8545-67A92B97C408}
$PROGID_SystemHostSecurityManagerHostSecurityManager = "System.Security.HostSecurityManager"
' CLSID = {29A6CF6F-D663-31A7-9210-1347871681FC}
$PROGID_SystemGacIdentityPermissionGacIdentityPermission = "System.Security.Permissions.GacIdentityPermission"
' CLSID = {AD664904-FE8A-3217-BBF5-E6AB1D998F5F}
$PROGID_SystemHostProtectionAttributeHostProtectionAttribute = "System.Security.Permissions.HostProtectionAttribute"
' CLSID = {06B81C12-A5DA-340D-AFF7-FA1453FBC29A}
$PROGID_SystemAllMembershipConditionAllMembershipCondition = "System.Security.Policy.AllMembershipCondition"
' CLSID = {3DDB2114-9285-30A6-906D-B117640CA927}
$PROGID_SystemApplicationDirectoryMembershipConditionApplicationDirectoryMembershipCondition = "System.Security.Policy.ApplicationDirectoryMembershipCondition"
' CLSID = {A5448B7A-AA07-3C56-B42B-7D881FA10934}
$PROGID_SystemApplicationTrustApplicationTrust = "System.Security.Policy.ApplicationTrust"
' CLSID = {62545937-20A9-3D0F-B04B-322E854EACB0}
$PROGID_SystemEvidenceEvidence = "System.Security.Policy.Evidence"
' CLSID = {EE24A2C3-3AA2-33DA-8731-A4FCC1105813}
$PROGID_SystemGacInstalledGacInstalled = "System.Security.Policy.GacInstalled"
' CLSID = {390E92C9-FA66-3357-BEF2-45A1F34186B9}
$PROGID_SystemGacMembershipConditionGacMembershipCondition = "System.Security.Policy.GacMembershipCondition"
' CLSID = {89D26277-8408-3FC8-BD44-CF5F0E614C82}
$PROGID_SystemPolicyExceptionPolicyException = "System.Security.Policy.PolicyException"
' CLSID = {AFAEF10F-1BC4-351F-886A-878A265C1862}
$PROGID_SystemTrustManagerContextTrustManagerContext = "System.Security.Policy.TrustManagerContext"
' CLSID = {EEF05C76-5C98-3685-A69C-6E1A26A7F846}
$PROGID_SystemSecurityExceptionSecurityException = "System.Security.SecurityException"
' CLSID = {7AE01D6C-BEE7-38F6-9A86-329D8A917803}
$PROGID_SystemSuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttribute = "System.Security.SuppressUnmanagedCodeSecurityAttribute"
' CLSID = {7E3393AB-2AB2-320B-8F6F-EAB6F5CF2CAF}
$PROGID_SystemUnverifiableCodeAttributeUnverifiableCodeAttribute = "System.Security.UnverifiableCodeAttribute"
' CLSID = {EBAA029C-01C0-32B6-AAE6-FE21ADFC3E5D}
$PROGID_SystemVerificationExceptionVerificationException = "System.Security.VerificationException"
' CLSID = {E38DA416-8050-3786-8201-46F187C15213}
$PROGID_SystemXmlSyntaxExceptionXmlSyntaxException = "System.Security.XmlSyntaxException"
' CLSID = {89BCC804-53A5-3EB2-A342-6282CC410260}
$PROGID_SystemSerializableAttributeSerializableAttribute = "System.SerializableAttribute"
' CLSID = {9C125A6F-EAE2-3FC1-97A1-C0DCEAB0B5DF}
$PROGID_SystemStackOverflowExceptionStackOverflowException = "System.StackOverflowException"
' CLSID = {50AAD4C2-61FA-3B1F-8157-5BA3B27AEE61}
$PROGID_SystemSTAThreadAttributeSTAThreadAttribute = "System.STAThreadAttribute"
' CLSID = {4224AC84-9B11-3561-8923-C893CA77ACBE}
$PROGID_SystemSystemExceptionSystemException = "System.SystemException"
' CLSID = {9E28EF95-9C6F-3A00-B525-36A76178CC9C}
$PROGID_SystemASCIIEncodingASCIIEncoding = "System.Text.ASCIIEncoding"
' CLSID = {E724B749-18D6-36AB-9F6D-09C36D9C6016}
$PROGID_SystemStringBuilderStringBuilder = "System.Text.StringBuilder"
' CLSID = {A0F5F5DC-337B-38D7-B1A3-FB1B95666BBF}
$PROGID_SystemUnicodeEncodingUnicodeEncoding = "System.Text.UnicodeEncoding"
' CLSID = {3C9DCA8B-4410-3143-B801-559553EB6725}
$PROGID_SystemUTF7EncodingUTF7Encoding = "System.Text.UTF7Encoding"
' CLSID = {8C40D44A-4EDE-3760-9B61-50255056D3C7}
$PROGID_SystemUTF8EncodingUTF8Encoding = "System.Text.UTF8Encoding"
' CLSID = {D74D613D-F27F-311B-A9A3-27EBC63A1A5D}
$PROGID_SystemMutexMutex = "System.Threading.Mutex"
' CLSID = {7FE87A55-1321-3D9F-8FEF-CD2F5E8AB2E9}
$PROGID_SystemOverlappedOverlapped = "System.Threading.Overlapped"
' CLSID = {9173D971-B142-38A5-8488-D10A9DCF71B0}
$PROGID_SystemReaderWriterLockReaderWriterLock = "System.Threading.ReaderWriterLock"
' CLSID = {48A75519-CB7A-3D18-B91E-BE62EE842A3E}
$PROGID_SystemSynchronizationLockExceptionSynchronizationLockException = "System.Threading.SynchronizationLockException"
' CLSID = {27E986E1-BAEC-3D48-82E4-14169CA8CECF}
$PROGID_SystemThreadInterruptedExceptionThreadInterruptedException = "System.Threading.ThreadInterruptedException"
' CLSID = {3E5509F0-1FB9-304D-8174-75D6C9AFE5DA}
$PROGID_SystemThreadStateExceptionThreadStateException = "System.Threading.ThreadStateException"
' CLSID = {FFC9F9AE-E87A-3252-8E25-B22423A40065}
$PROGID_SystemThreadStaticAttributeThreadStaticAttribute = "System.ThreadStaticAttribute"
' CLSID = {EAA78D4A-20A3-3FDE-AB72-D3D55E3AEFE6}
$PROGID_SystemTimeoutExceptionTimeoutException = "System.TimeoutException"
' CLSID = {112BC2E7-9EF9-3648-AF9E-45C0D4B89929}
$PROGID_SystemTypeLoadExceptionTypeLoadException = "System.TypeLoadException"
' CLSID = {D6D2034D-5F67-30D7-9CC5-452F2C46694F}
$PROGID_SystemTypeUnloadedExceptionTypeUnloadedException = "System.TypeUnloadedException"
' CLSID = {75215200-A2FE-30F6-A34B-8F1A1830358E}
$PROGID_SystemUnauthorizedAccessExceptionUnauthorizedAccessException = "System.UnauthorizedAccessException"
' CLSID = {43CD41AD-3B78-3531-9031-3059E0AA64EB}
$PROGID_SystemVersionVersion = "System.Version"
José is a genius, that is fact.
Now the question: what is an DISPATCH variable in memory? a 32bit pointer? A variant?
SIZEOF(whateverDISPATCHVariable) is not supported by PB so I cannot know.
Thanks a lot
Eros
They are 32-bit pointers.
Thanks José.
I was making some experiment with your code. I would like to have an array of variant parameters instead of multiple single variant variables.
Calling a class method passing a variant array element seems not supported.
'...
REDIM vPrm(1 to 1) as VARIANT
'...
Object Call oStack(1).Push(vPrm(1))
I get a compile code 422: "Scalar variable expected". Can it be?
Thanks
Eros
Quote
I get a compile code 422: "Scalar variable expected". Can it be?
Sure. COM doesn't know anything of PB's arrays. It uses safearrays.
Anyway, you can't push and pop arrays with the Push and Pop methods of the System.Collections.Stack class, but just one element.
Well, because PB is compiling my code, I thought PB was doing the job for me.
1 VARIANT variable is equal to 1 array element of a VARIANT array from a programming point of view.
I'm not passing an array of variants but just a single variant (in this case an element of).
Anyhow, thanks a lot for your reply.
I will continue to experiment your fantastic code.
Quote
1 VARIANT variable is equal to 1 array element of a VARIANT array from a programming point of view.
I'm not passing an array of variants but just a single variant (in this case an element of).
With standard functions and direct interface calls, if the parameter is a BYREF VARIANT, the compiler will pass the address of the referenced element of the array. But Automation doesn't work this way. Automation will fill a VariantArgs array with the passed parameters and then fill a DISPPARAMS structure with some other data and the address of the VariantArgs array. And an address to a PowerBASIC array of variants is not a valid parameter. The compiler could be changed to build a safearray under the hood with the passed array, but this is not currently supported. In any case, if the parameter expects a single BYREF VARIANT, and you pass a safearray, even if it has only one element, it won't work. Don't ask me why I hate Automation :)
BTW notice that I have used a class just to make it easier to use the code, but only an instance of the class can be created because the CLR runtime can only be loaded once in the same process.
Also, Automation and late binding must be used to call the methods and properties of the classes because they are dynamic properties (there is not a virtual table).
QuoteSystem.DateTime if not a cocreatable class, but an structure. This is a list of the ProgIDs in mscorlib: ...
I see, bummer. I assumed all the classes in mscorlib.dll would be usable.
I fiddled around with a couple more of the .NET Framework classes. Here are some code snippets, they require José's CCLRHost code.
System.Collections.ArrayList
...
oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Collections.ArrayList")
IF ISOBJECT(oDisp) THEN
vStr = UCODE$("First string")
OBJECT CALL oDisp.Add(vStr) TO vCount
vStr = UCODE$("Second string")
OBJECT CALL oDisp.Add(vStr) TO vCount
vStr = UCODE$("Third string")
OBJECT CALL oDisp.Add(vStr) TO vCount
FOR x = 0 to VARIANT#(vCount)
vIndex = x
OBJECT CALL oDisp.Item(vIndex) TO vItem
strOutput = VARIANT$(vItem)
STDOUT ACODE$(strOutput)
NEXT x
oDisp = NOTHING
ELSE
STDOUT "Error calling CreateInstance()"
END IF
...
System.Random
...
oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Random")
IF ISOBJECT(oDisp) THEN
OBJECT CALL oDisp.Next() TO vRnd
strOutput = FORMAT$(VARIANT#(vRnd))
STDOUT strOutput
oDisp = NOTHING
ELSE
STDOUT "Error calling CreateInstance()"
END IF
...
...
oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Random")
IF ISOBJECT(oDisp) THEN
OBJECT CALL oDisp.NextDouble() TO vRnd
strOutput = FORMAT$(VARIANT#(vRnd))
STDOUT strOutput
oDisp = NOTHING
ELSE
STDOUT "Error calling CreateInstance()"
END IF
...
I couldn't get this overload of System.Random.Next to work, I never figured out why. OBJRESULT$ says "Invalid number of parameters.".
...
oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Random")
IF ISOBJECT(oDisp) THEN
vMin = 1 ' inclusive
vMax = 50 ' exclusive
OBJECT CALL oDisp.Next(vMin, vMax) TO vRnd
IF VARIANT#(vRnd) = 0 then
STDOUT OBJRESULT$(OBJRESULT)
ELSE
strOutput = FORMAT$(VARIANT#(vRnd))
STDOUT strOutput
END IF
oDisp = NOTHING
ELSE
STDOUT "Error calling CreateInstance()"
END IF
...
The translation to the COM interface makes it impossible to use the overloads this way.
I suspect functions will get an ordinal number.
Like i mentioned before, the easiest is making use of a custom assembly to bridge the gap.
I know Jose doesn't like my solution :)
But then.. just wait until he provides the assembly file loading part.
Which is fairly simple with respect to his current code.
Quote
I couldn't get this overload of System.Random.Next to work,
COM doesn't support overloading.
Quote
Like i mentioned before, the easiest is making use of a custom assembly to bridge the gap.
I know Jose doesn't like my solution
My interest in .NET is very low. Having to create wrapper assembles is not something I'm going to do unless I absolutely need it.
QuoteMy interest in .NET is very low. Having to create wrapper assembles is not something I'm going to do unless I absolutely need it.
I don't blame you. I find it interesting, but it's not something that I really need either.
Well, it seems that we don't need to write a wrapper after all.
This overloaded method has three definitions:
Random.Next ()
Random.Next (Int32)
Random.Next (Int32, Int32)
For the first, use:
OBJECT CALL oDisp.Next() TO vRnd
For the second, use:
vMax = 50
OBJECT CALL oDisp.Next_3(vMax) TO vRnd
For the third, use:
vMin = 1
vMax = 50
OBJECT CALL oDisp.Next_2(vMin) TO vRnd
Notice that, at least with this class, the order is no the same than in the documentation.
What is clear, however, is that it adds an underscore and an ordinal to the name of the method.
José,
Aha, thanks. If you don't mind me asking, how did you figure that out?
If you look at mscorlib20.inc, you will see that it is the technique that they have used for the overloaded methods of this library, e.g.
AppDomain.CreateInstance (String, String)
AppDomain.CreateInstance (String, String, Object[])
AppDomain.CreateInstance (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
' =====================================================================================
METHOD CreateInstance ( _ ' VTable offset = 148
BYVAL STRING _ ' [0] [in] AssemblyName /* VT_BSTR */
, BYVAL STRING _ ' [0] [in] typeName /* VT_BSTR */
) AS SystemObjectHandle ' [out][retval] **pRetVal /* **_ObjectHandle <dispinterface> */
' =====================================================================================
' =====================================================================================
METHOD CreateInstance_2 ( _ ' VTable offset = 156
BYVAL STRING _ ' [0] [in] AssemblyName /* VT_BSTR */
, BYVAL STRING _ ' [0] [in] typeName /* VT_BSTR */
, BYVAL DWORD _ ' [0] [in] activationAttributes /* VT_SAFEARRAY */
) AS SystemObjectHandle ' [out][retval] **pRetVal /* **_ObjectHandle <dispinterface> */
' =====================================================================================
' =====================================================================================
METHOD CreateInstance_3 ( _ ' VTable offset = 164
BYVAL STRING _ ' [0] [in] AssemblyName /* VT_BSTR */
, BYVAL STRING _ ' [0] [in] typeName /* VT_BSTR */
, BYVAL INTEGER _ ' [0] [in] ignoreCase /* VT_BOOL <Integer> */
, BYVAL LONG _ ' [0] [in] bindingAttr /* BindingFlags <enum> */
, BYVAL SystemBinder _ ' [1] [in] *Binder /* *_Binder <dispinterface> */
, BYVAL DWORD _ ' [0] [in] args /* VT_SAFEARRAY */
, BYVAL SystemCultureInfo _ ' [1] [in] *culture /* *_CultureInfo <dispinterface> */
, BYVAL DWORD _ ' [0] [in] activationAttributes /* VT_SAFEARRAY */
, BYVAL SystemEvidence _ ' [1] [in] *securityAttributes /* *_Evidence <dispinterface> */
) AS SystemObjectHandle ' [out][retval] **pRetVal /* **_ObjectHandle <dispinterface> */
' =====================================================================================
José,
I see.
Why didn't I notice that? I must have spent 20 minutes looking at mscorlib20.inc. ;D
Thanks.
System.Text.StringBuilder
...
oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Text.StringBuilder")
IF ISOBJECT(oDisp) THEN
vStr1 = "Hello"
vStr2 = " World"
OBJECT CALL oDisp.Append_3(vStr1) TO vSB
LET oSB = vSB
OBJECT CALL oSB.Append_3(vStr2) TO vSB
LET oSB = vSB
OBJECT CALL oSB.ToString() TO vSB
strOutput = VARIANT$(vSB)
STDOUT strOutput
oDisp = NOTHING
oSB = NOTHING
ELSE
STDOUT "Error calling CreateInstance()"
END IF
...