Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

525
Vistas
Cómo manejar hablar con VB6 ActiveX dll que tiene dependencias OCX desde una aplicación .NET WPF

Tengo un dll ActiveX de VB6 que depende de ComDlg32.ocx. Esta dll ActiveX se llama desde una aplicación .NET. ActiveX dll tiene una interfaz pública que tiene 1 método, que abre un formulario, que abre un cuadro de diálogo Abrir archivo (de ComDlg32.ocx). La aplicación .NET tiene un botón que llamará a este método ActiveX dll.

Todo esto funciona cuando ComDlg32.ocx y ActiveX dll están registrados (a través de regsvr32), pero necesito que esto funcione usando RegFree COM, al menos para las dependencias de ActiveX dll. He creado un archivo de manifiesto para este ActiveX dll, pero parece que no se lee. ProcMon no tenía ninguna referencia al archivo de manifiesto y sxstrace no me dio información (literalmente, un archivo de texto en blanco cuando analicé el archivo etl).

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="DeployArchitectureTest" version="1.0.0.0" type="win32" processorArchitecture="x86"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> <file name="COMDLG32.OCX"> <typelib tlbid="{F9043C88-F6F2-101A-A3C9-08002B2F49FB}" version="1.2" flags="control,hasdiskimage" helpdir="" /> <comClass clsid="{F9043C85-F6F2-101A-A3C9-08002B2F49FB}" tlbid="{F9043C88-F6F2-101A-A3C9-08002B2F49FB}" progid="MSComDlg.CommonDialog.1" threadingModel="Apartment" miscStatus="" miscStatusContent="recomposeonresize,onlyiconic,cantlinkinside,insideout,activatewhenvisible,invisibleatruntime,setclientsitefirst"> <progid>MSComDlg.CommonDialog</progid> </comClass> </file> </assembly>

Probé un manifiesto externo para el dll y también incrusté el manifiesto, pero aún no tuve suerte. Debo estar perdiendo algo, pero toda la información que puedo encontrar habla sobre cómo crear un archivo de manifiesto para un exe, pero no hay información sobre cómo manejar un DLL de ActiveX que tiene sus propias dependencias.

Si alguien tiene alguna información, se lo agradecería mucho.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Después de investigar un poco más y de que @SimonMourier y @HansPassant me indicaran la dirección correcta, logré que esto funcionara.

Pensé que habría sido posible un manifiesto dll si estuviera usando el ID de recurso n. ° 2 como mencionó @HansPassant, pero no pude hacer que funcionara de esa manera. No importa lo que hice, el manifiesto dll nunca pareció leerse.

Sin embargo, descubrí que incluir todos los datos del manifiesto de lo que era el manifiesto dll en el manifiesto exe y asegurarme de que el exe no tuviera un manifiesto incrustado permitía que RegFree COM funcionara como se esperaba. Descubrí que Visual Studio estaba creando mi .NET exe con un manifiesto incrustado, aunque había un archivo app.manifest como parte del proyecto. Tuve que configurar el COM dll como 'aislado = verdadero' para que el manifiesto se construyera como externo.

Así que gracias a @SimonMourier y @HansPassant, sus comentarios me guiaron por el camino correcto para resolverlo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda