从桌面应用固定辅助磁贴

桌面应用(如 WinUI 3 应用(使用Windows 应用 SDK)或 Windows Presentation Foundation(WPF)或Windows 窗体(WinForms)应用,可以使用打包的应用固定辅助磁贴(请参阅从代码生成 MSIX 包)。 这以前被称为桌面桥。

辅助磁贴的屏幕截图

重要

需要 Fall Creators Update:必须以 SDK 16299 为目标,并运行内部版本 16299 或更高版本来固定桌面桥应用中的辅助磁贴。

从 Windows 应用 SDK、WPF 或 WinForms 应用程序添加辅助磁贴与纯 UWP 应用非常相似。 唯一的区别是必须指定主窗口句柄(HWND)。 这是因为固定磁贴时,Windows 会显示一个模式对话框,要求用户确认是否要固定磁贴。 如果桌面应用程序未使用所有者窗口配置 SecondaryTile 对象,则 Windows 不知道在何处绘制对话框,并且操作将失败。

将应用打包

如果要使用 WinUI 3 创建Windows 应用 SDK应用程序,则必须使用打包的应用程序来固定辅助磁贴。 如果从打包的应用模板开始,则无需执行额外的步骤来打包应用。

如果使用 WPF 或 WinForms,并且尚未将应用打包到桌面桥,则需要执行此操作,然后才能使用任何Windows 运行时 API(请参阅从代码生成 MSIX 包)。

使用 IInitializeWithWindow 接口初始化和固定辅助磁贴

注意

本部分适用于 WinUI 3;以及用于 .NET 6 或更高版本的 WPF/WinForms。

  1. 在项目文件中,将 TargetFramework 属性设置为可用于访问Windows 运行时 API 的值(请参阅 .NET 6 及更高版本:使用目标框架名字对象选项)。 这包括对 WinRT.Interop 命名空间的访问权限(请参阅 从 .NET 应用调用互操作 API)。 例如:

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET; for example, "net6.0-windows10.0.19041.0" -->
      <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
    </PropertyGroup>
    
  2. 像使用普通 UWP 应用一样初始化新的辅助磁贴对象。 若要了解有关创建和固定辅助磁贴的详细信息,请参阅 固定辅助磁贴

    // Initialize the tile with required arguments
    var tile = new Windows.UI.StartScreen.SecondaryTile(
        "myTileId5391",
        "Display name",
        "myActivationArgs",
        new Uri("ms-appx:///Assets/Square150x150Logo.png"),
        TileSize.Default);
    
  3. 检索窗口句柄,并使用该句柄初始化辅助磁贴对象。 在下面的代码中, this 是对 Window 对象的引用(无论是 WinUI 3 窗口、WPF 窗口还是 WinForms 窗口)。 有关详细信息,请参阅检索依赖于 CoreWindow 的窗口句柄(HWND)和显示 WinRT UI 对象。

    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
    
  4. 最后,请求像在普通 UWP 应用中一样固定磁贴。

    // Pin the tile
    bool isPinned = await tile.RequestCreateAsync();
    
    // Here, update UI to reflect whether user can now either unpin or pin
    

发送磁贴通知

重要

需要 2018 年 4 月版本 17134.81 或更高版本:必须运行内部版本 17134.81 或更高版本,才能将磁贴或锁屏提醒通知从桌面桥应用发送到辅助磁贴。 在此 .81 服务更新之前,从桌面桥应用向辅助磁贴发送磁贴或锁屏提醒通知时,0x80070490元素未发现异常。

发送磁贴或锁屏提醒通知与 UWP 应用相同。 请参阅 “发送本地磁贴通知 ”以开始使用。

资源