1

我正在开发一个必须与后台进程进行广泛通信的 UWP 应用 (C++/WinRT)。不幸的是,后台进程必须保持完全信任的“Win32”进程。两者都打包在一个 MSIX 中。

出于性能和可编程性的原因,我的首选是将后台进程转换为进程外 WinRT 组件。应用服务是一种可能性,但并不理想。

我找到了许多通过 WRL 创建 OOP WinRT 组件的代码示例。但是,激活是通过 CoreApplication::RunWithActivationFactories() 执行的,(据我所知)需要一个 AppContainer。

我知道我可以在 Win32 进程中使用WinRT 组件。我可以创建一个吗?如果是这样,在 C++/WinRT 中激活会是什么样子?

4

1 回答 1

0

是的,从 Windows 10 版本 1903,2019 年 5 月更新开始,Windows 增加了对非打包桌面应用程序的支持,以使用用户定义的(第三方)Windows 运行时 (WinRT) 组件,这意味着我们可以使用 Winrt直接来自 Win32 进程的组件。要从 Win32 应用成功引用 C++ Windows 运行时组件,您需要使用 C++/WinRT 生成组件的投影头文件。然后,您可以在您的应用代码中包含这些头文件来调用您的组件。

详细信息请参考这篇文章:

https://blogs.windows.com/windowsdeveloper/2019/04/30/enhancing-non-packaged-desktop-apps-using-windows-runtime-components/

详细示例请参考这里:

https://github.com/microsoft/RegFree_WinRT/tree/master/Cpp

谢谢。

于 2019-10-22T05:42:24.277 回答