【问题标题】:How to launch UWP app with app's main window in background using url如何使用 url 在后台使用应用程序的主窗口启动 UWP 应用程序
【发布时间】:2022-01-03 15:14:24
【问题描述】:

我想从另一个应用启动 UWP 应用。例如,我想使用启动协议(ms-people:、msnweather: 等)启动应用程序。我正在使用 API LaunchUriAsync。它正在启动应用程序。但是启动的新应用程序获得了焦点,并且它的主窗口位于我正在与之交互的应用程序顶部的前台(我从中启动了这个新应用程序)。 但是,我想将这个新的应用程序窗口保留在后台,并让用户与原始应用程序进行交互。我怎么做? 谢谢

【问题讨论】:

  • 你的应用也是 UWP 应用?您是否尝试在 LauncherOptions 中设置视图大小?
  • 文档说“通过设置 DesiredRemainingView,您不能保证源应用程序的特定窗口行为。”所以这不能保证给我所需的结果吗?

标签: c++ windows winapi uwp launch


【解决方案1】:

如何使用 url 在后台使用应用程序的主窗口启动 UWP 应用程序

恐怕LaunchUriAsync api 不包含使用 url 在后台启动应用程序主窗口的此类选项。但是,如果应用是使用 uri 启动的,我们有一个解决方法,可以手动将启动的应用推送到后台。

OnActivated 事件处理程序接收所有激活事件。 Kind 属性指示激活事件的类型。所以你可以在下面最小化目标应用程序

protected override void OnActivated(IActivatedEventArgs args)
  {
      if (args.Kind == ActivationKind.Protocol)
      {
         ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
         // TODO: Handle URI activation
         // The received URI is eventArgs.Uri.AbsoluteUri
      }
   }

要最小化应用程序,请参考case reply

【讨论】:

  • 这个 OnActivated 需要在我启动的目标应用程序中实现,对吗?那不是我的应用程序。
  • 另外,如果不使用协议 url,有没有其他方法可以在后台启动应用程序的主窗口?
  • 是的,OnActivated 需要植入目标应用程序中,对于 uwp 没有其他方法可以在后台启动应用程序。如果你想在不启动应用的情况下连接,你可以尝试用appservice来实现,但appservice也需要植入目标应用中。
  • 如果您确实想要这样的功能,请随时在 windows 反馈中心发布您的要求,如果答案有帮助或解决问题,请考虑标记它。
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 2011-05-21
  • 2019-01-30
  • 2017-03-23
相关资源
最近更新 更多