首页 文章

UWP和非UWP应用之间的通信

提问于
浏览
7

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

怎么打电话? AppServiceConnection类是否在非uwp应用程序中可用?

3 回答

  • 0

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

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

  • 12

    我想我有你的答案 .

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

    现在,在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

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

相关问题