Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

533
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda