デスクトップ アプリからセカンダリ タイルをピン留めする
(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 用。
プロジェクト ファイルで、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>
通常の 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);
ウィンドウ ハンドルを取得し、そのハンドルを使用してセカンダリ タイル オブジェクトを初期化します。 次のコードでは、
this
は Window オブジェクトへの参照です (WinUI 3 ウィンドウ、WPF ウィンドウ、WinForms ウィンドウのいずれであっても)。 詳細については、「ウィンドウ ハンドル (HWND)を取得する」および「CoreWindow に依存する WinRT UI オブジェクトを表示するを参照してください。var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this); WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
最後に、通常の 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 アプリと同じです。 開始するには、「 ローカル タイル通知の送信 を参照してください。
リソース
Windows developer