次の方法で共有


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

(Windows アプリ SDKを使用する) WinUI 3 アプリ、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 サービス更新プログラムの前に、デスクトップ ブリッジ アプリからタイルまたはバッジ通知をセカンダリ タイルに送信すると、0x80070490 Element が見つかりません例外が発生します。

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

リソース