我们有一个经典的桌面应用程序在Windows上,需要与网络浏览器通信。因此,我们创建了web浏览器扩展,并使用本机消息传递技术在网页上的JavaScript和本机桌面应用程序之间传递消息。这种通信方式目前在Google、Mozilla和Opera中得到支持。现在,我们希望在Microsoft中执行相同的任务。但不幸的是,Microsoft以与其他浏览器不同的方式支持本地消息传递。在Chrome/Firefox/Opera中,一个序列化的JSON字符串可以通过stdin/stdout传递给本地消息传递主机应用程序。
由于Microsoft是一个通用的Windows应用程序,它只支持通过AppService与另一个UWP应用程序通信(并通过FullTrustProcess进一步与我们的经典桌面应用程序进行通信)。由于多种原因,我们的经典桌面应用程序无法转换为UWP应用。基本上这是没有问题的,但有些问题我目前还不知道如何解决:
UWP应用程序似乎需要一个用户界面。但是扩展的目的只是通信,没有用户界面的意图。
因此,当用户打开UWP应用程序时,我可以显示有关UWP app / Edge扩展的一些信息,但是如果用户关闭应用程序(例如,通过单击(X)按钮),UWP应用程序进程就会被系统杀死。如果在通信过程中发生这种情况,则本机消息传递通信将被中断,用户将收到错误。到目前为止,我还没有找到避免这种情况的方法。当Microsoft启动UWP应用程序(由扩展的背景runtime.connectNative代码中的“JavaScript”启动)时,它将以后台模式运行,如果Microsoft退出,它将被终止。但是,如果用户打开应用程序(例如通过“开始”菜单),则应用程序的进程将被重用,并且它现在正以前台模式运行。然后,如果App被用户关闭,最初由Microsoft启动的进程将被终止。我看过微软的官方"ExtendedExecution“例子,但这也是一样的。
也许我可以从我们的本地桌面应用程序中找到UWP应用程序的HWND,并使用它执行一些丑陋的攻击,但我绝对想避免这种情况。
你好,多明尼克
发布于 2017-07-19 08:50:14
uwp https://learn.microsoft.com/en-us/windows/uwp/launch-resume/support-your-app-with-background-tasks中有一些背景任务
此外,您还会对package.appxmanifest文件中的“package.appxmanifest”设置感兴趣。使用它,应用程序的链接将不会出现在“开始”菜单中。
<Applications>
<Application Id="id" Executable="$targetnametoken$.exe" EntryPoint="entrypoint.App">
<uap:VisualElements AppListEntry="none" .../>..。
https://stackoverflow.com/questions/45008049
复制相似问题