UWP和非UWP应用之间的通信

时间:2017-04-03 10:49:08

标签: uwp windows-10 win-universal-app windows-10-universal desktop-bridge

是否可以在uwp和非uwp应用之间进行通信。我的非uwp是一个提供服务的后台任务。我想在uwp应用程序中调用非uwp服务。

如何拨打电话? AppServiceConnection类是否在非uwp应用程序中可用?

5 个答案:

答案 0 :(得分:13)

是的,非UWP应用可以使用AppServices与UWP应用进行通信。

这里有一个示例: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/blob/master/Samples/AppServiceBridgeSample_C%2B%2B/cs/Win32Process_CPP/Win32Process_CPP.cpp

答案 1 :(得分:0)

我想我有答案。

首先,如果你想要像UWP一样容易设计的典型win32功能,你应该选择WPF,它几乎使用相同的设计框架,但它可以支持UWP没有的所有东西,传统的东西,如WPF可以支持Wndproc循环和向其他应用程序发送消息。

现在,在UWP上进行跨应用程序通信的方法是通过从名称中取代U,如果你想继续使用它,它将不再是通用的。

在我深入了解其原因之前,我应该解释整个Appservice的工作原理。

Appservice是一个后台服务,可以从其他应用程序调用,它在Backgroundhost.exe下托管,因此这可以确保它在与应用程序不同的线程上运行,从而保留沙箱,正如我所说它可以由另一个应用程序启动,它很像程序中的一个类/方法,可以被外面的东西激活,你仍然可以用它们更改appfolder设置,这样你就可以让你的主应用程序知道这次通信中发生了什么。

因此,为了获得其他应用程序,要访问此应用程序服务,他们必须知道它的地址,并且为了知道这一点,您必须对自己进行硬编码并将其包含在您的文件夹中以及通过你的主要APP,这只能在桌面版本的UWP上使用,所以你看,无论如何最好使用WPF。

如果Windows商店是您想要使用UWP的原因,那么请查看有关如何将传统dekstop应用程序迁移到Windows商店的指南。 https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root

此外,如果你对像UWP只支持的紧凑叠加这样闪亮的新api感兴趣,你不应该这样,因为有一些方法可以让它在普通的桌面应用程序上运行。

答案 2 :(得分:0)

UWP应用与桌面应用通信的一种方法是使用命名管道。但是,由于UWP应用程序无法直接通过命名管道进行通信,因此您可以使用代理组件来实现此目的。您可以在此处获取有关如何创建代理组件的更多详细信息:https://docs.microsoft.com/en-us/windows/uwp/winrt-components/brokered-windows-runtime-components-for-side-loaded-windows-store-apps

答案 3 :(得分:0)

一种简单的方法是使用WCF服务或其他RPC框架(我使用WAMP Sharp)创建Windows服务(但要了解其局限性),然后从UWP应用或Win32应用中调用它。我认为这不是最佳做法,但就我们而言,它就像是一种魅力。另外,别忘了为UWP应用打开环回功能。

答案 4 :(得分:0)

我推荐stefanwick的以下示例。它实际上是4部分,在代码和Windows存储区中都有详细信息和示例: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/