es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comunicación UWP / Desktop-Bridge utilizando COM (empaquetado).

Actualmente estoy desarrollando una aplicación UWP que ahora necesita acceso a APIs que normalmente no son accesibles por aplicaciones en un AppContainer.
Como aún no puedo migrar a WinUI3, quiero intentar usar DesktopBridge para realizar el trabajo que de otro modo estaría restringido.

Dado que ambos procesos deben comunicarse entre sí, pensé en COM, ya que debería facilitar las cosas una vez que todo esté configurado.
Según esta página, esto debería ser posible utilizando “Packaged Com”.
Ahora tengo…

  • Un servidor COM fuera del proceso (c# net5.0) al que pueden acceder aplicaciones win32 no empaquetadas (por ejemplo, PowerShell), pero no mi propia aplicación UWP.
  • La aplicación UWP con la lógica principal y la interfaz de usuario.
  • Un proyecto de empaquetado que crea un paquete con ambos proyectos. (Manifiesto)

El código está en GitHub: Repo.

¿Alguien tiene alguna idea de cómo resolver este problema o una alternativa para la IPC?

PD: Tutoriales que utilicé:
– Packaged Com
– Out-Of-Proc COM en c#
– Empaquetado / DesktopBridge

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no tengo experiencia práctica con el código específico en el que estás trabajando. Sin embargo, aquí tienes algunas sugerencias que podrías probar:

    1. Asegúrate de que el servidor COM y la aplicación UWP se estén ejecutando con el mismo contexto de usuario. Si se están ejecutando bajo contextos de usuario diferentes, es posible que no puedan comunicarse entre sí.
    2. Intenta registrar el servidor COM utilizando regsvr32 dentro de la carpeta AppX donde está instalada la aplicación UWP. De esta manera, el servidor COM debería ser visible para la aplicación UWP.

    3. Si los pasos anteriores no funcionan, considera utilizar las API de WinRT para implementar la comunicación entre procesos. Las API de WinRT están diseñadas específicamente para aplicaciones UWP y deberían funcionar sin problemas.

    4. También puedes investigar sobre el uso de tuberías con nombre o sockets para establecer la comunicación entre los dos procesos.

    Espero que estas sugerencias sean útiles para resolver tu problema.

Comments are closed.