Articles of com

¿Cómo registro un COM DLL escrito en C # con Regsvr32?

Tengo una aplicación VB6 que usa una DLL COM. La DLL está escrita en C #. En las propiedades del proyecto C # tengo marcada la opción “Registrar para la interoperabilidad COM”. La aplicación VB6 funciona bien en mi máquina de desarrollo. El código de C # sigue exactamente este formato: CodeProject C # COM […]

¿Por qué no puedo convertir mi objeto COM en la interfaz que implementa en C #?

Tengo esta interfaz en el dll (este código se muestra en Visual Studio a partir de metadatos): #region Assembly XCapture.dll, v2.0.50727 // d:\svn\dashboard\trunk\Source\MockDiagnosticsServer\lib\XCapture.dll #endregion using System; using System.Runtime.InteropServices; namespace XCapture { [TypeLibType(4160)] [Guid(“XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”)] public interface IDiagnostics { [DispId(1)] void GetStatusInfo(int index, ref object data); } } Así que creé un servidor COM con dicha clase: […]

¿Cómo hacer que un objeto COM .NET tenga un subproceso de apartamento?

Los objetos .NET son de subproceso libre por defecto. Si se clasifica a otro subproceso a través de COM, siempre se calculan para sí mismos, independientemente de si el subproceso del creador fue STA o no, e independientemente de su valor de registro ThreadingModel . Sospecho que agregan el Marshaler de hilos libres (más detalles […]

Exponer Propiedad como Variante en .NET para Interop

Estoy creando una clase contenedora en .NET (VB.NET, como ocurre, pero está igualmente relacionado con C #) que está expuesto a COM y una de las propiedades que estoy tratando de ajustar es una Variante. Pensé que solo podría usar un Objeto, pero me sale un error: Public Property FieldValue([vFieldID As Object = -1]) As […]

¿Qué significa “Método” ~ “del objeto” ~ “fallido”?

Estoy intentando ejecutar una aplicación VB6 heredada en mi escritorio (no tiene una interfaz de usuario, ya que es una aplicación de línea de comandos), y cuando lo hago, aparece un mensaje que dice: Run-time error ‘4099’: Method ‘~’ of object ‘~’ failed Esto no significa nada para mí; ¿Alguien tiene una idea de lo […]

WinWord.exe no se cerrará después de llamar a Word.Documents.Add – Word .NET Interop

Me encuentro con el escenario clásico donde, al crear objetos Word COM en .NET (a través del ensamblado Microsoft.Office.Interop.Word), el proceso WinWord no se cerrará aunque esté cerrando y soltando correctamente los objetos . Lo he reducido al uso del método Word.Documents.Add (). Puedo trabajar con Word de otras formas sin problemas (abrir documentos, modificar […]

Liberando objetos COM temporales

Considere el siguiente código C # utilizando un objeto COM. MyComObject o = new MyComObject; try { var baz = o.Foo.Bar.Baz; try { // do something with baz } finally { Marshal.ReleaseComObject(baz); } } finally { Marshal.ReleaseComObject(o); } Esto liberará los objetos COM o baz , pero no los objetos temporales que regresan por o.Foo […]

Código equivalente de CreateObject en C #

Tengo un código en VB6. ¿Alguien puede decirme cómo escribirlo en C# . Este código es a continuación: Set Amibroker = CreateObject(“Broker.Application”) Set STOCK = Amibroker.Stocks.Add(ticker) Set quote = STOCK.Quotations.Add(stInDate) quote.Open = stInOpen quote.High = stInHigh quote.Low = stInlow quote.Close = stInYcp quote.Volume = stInVolume Set STOCK = Nothing Set quote = Nothing ¿Cuál es […]

¿Qué versión de MSXML debo usar?

Parece que esto sería una pregunta común, aunque no pude encontrarlo en SO. ¿Qué versión de MSXML debo usar en mis aplicaciones, y más importante aún, cómo debo decidir? Hay MSXML3, 4, 5 y 6. Recientemente publiqué un código en calling-wcf-service-by-vbscript que usaba MSXML v4. AnthonyWJones publicó que no debería usar 4, sino 3 o […]

C # exponer a la herencia de la interfaz COM

Digamos que tengo una clase BaseClass que implementa IBaseClass Luego tengo una clase de interfaz que hereda IBaseClass. Luego tengo una clase llamada clase que implementa IClass. Por ejemplo: [ComVisible(true), InterfaceType(ComInterfaceType.IsDual), Guid(“XXXXXXX”)] public interface IBaseClass { [PreserveSig] string GetA() } [ComVisible(true), InterfaceType(ComInterfaceType.IsDual), Guid(“XXXXXXX”)] public interface IClass : IBaseClass { [PreserveSig] string GetB() } [ComVisible(true), ClassInterface(ClassInterfaceType.None), […]