デスクトップ アプリからセカンダリ タイルをピン留めする

WinUI 3 アプリ (Windows アプリ SDKを使用)、Windows Presentation Foundation (WPF) またはWindows フォーム (WinForms) アプリなどのデスクトップ アプリは、パッケージ 化されたアプリを使用してセカンダリ タイルをピン留めできます (「コードから MSIX パッケージをビルドする」を参照)。 これは、以前は デスクトップ ブリッジ と呼れていました。

セカンダリ タイルのスクリーン ショット

重要

Fall Creators Update が必要: デスクトップ ブリッジ アプリからセカンダリ タイルをピン留めするには、SDK 16299 をターゲットとし、ビルド 16299 以降を実行している必要があります。

Windows アプリ SDK、WPF、または WinForms アプリケーションからセカンダリ タイルを追加することは、純粋な UWP アプリとよく似ています。 唯一の違いは、メイン ウィンドウのハンドル (HWND) を指定する必要があることです。 これは、タイルをピン留めするときに、モーダル ダイアログが表示され、タイルをピン留めするかどうかをユーザーに確認するためです。 デスクトップ アプリケーションで SecondaryTile オブジェクトが所有者ウィンドウで構成されていない場合、Windows はダイアログを描画する場所を知らないので、操作は失敗します。

アプリのパッケージ化

WinUI 3 でWindows アプリ SDK アプリケーションを作成する場合は、パッケージ化されたアプリケーションを使用してセカンダリ タイルをピン留めする必要があります。 パッケージ化されたアプリ テンプレートから開始する場合、アプリのパッケージ化に必要な追加の手順はありません。

WPF または WinForms を使用していて、アプリをデスクトップ ブリッジでパッケージ化していない場合は、Windows ランタイム API を使用する前にこれを行う必要があります (「コードから MSIX パッケージをビルドする」を参照してください)。

IInitializeWithWindow インターフェイスを使用してセカンダリ タイルを初期化してピン留めする

Note

このセクションは 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 ウィンドウのいずれであっても)。 詳細については、「 ウィンドウ ハンドルの取得 (HWND)」 および 「CoreWindow に依存する 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 サービス更新プログラムの前に、デスクトップ ブリッジ アプリからセカンダリ タイルにタイル通知またはバッジ通知を送信するときに a 0x80070490 要素が見つかりませんという例外が発生します。

タイル通知またはバッジ通知の送信は UWP アプリと同じです。 手順については、「ローカル タイル通知の送信」を参照してください。

リソース