13

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

怎么打那个电话?AppServiceConnection 类在非 uwp 应用程序中可用吗?

4

5 回答 5

17

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

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

于 2017-04-13T01:31:59.253 回答
3

我推荐 stefanwick 的以下示例。它实际上是 4 个部分,其中包含代码和 Windows 商店中的详细信息和示例: https ://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/

于 2019-12-24T05:51:27.053 回答
0

一种简单的方法是使用 WCF 服务或其他 RPC 框架(我使用 WAMP Sharp)创建 Windows 服务(但请阅读它们的限制)并从 UWP 应用程序或 Win32 应用程序调用它。我认为这不是最佳实践,但对我们而言,它就像一种魅力。另外,不要忘记为 UWP 应用打开环回。

于 2019-03-04T16:19:58.563 回答
0

我想我有你的答案。

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

现在,在 UWP 上获得跨应用程序通信的方法是通过将 U 从其名称中插入,如果您希望继续使用它,它将不再是通用的。

在深入了解为什么会这样之前,我应该解释一下整个 Appservice 是如何工作的。

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

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

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

此外,如果您对仅在 UWP 上支持的紧凑覆盖等闪亮的新 api 感兴趣,您不应该这样做,因为也有一些方法可以让它在普通桌面应用程序上工作。

于 2017-08-31T20:39:36.897 回答
0

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

于 2018-11-08T09:39:27.957 回答