アプリをタスク バーにピン留めする

アプリを [スタート] メニューにピン留めするのと同じように、Win32 または UWP アプリのタスク バーへのピン留めをプログラムでユーザーに要求できるようになりました。 また、アプリが現在ピン留めされているかどうか、およびタスク バーでピン留めが許可されているかどうかをチェックできます。

Screenshot of a Windows 11 task bar showing the app pinned there.

重要

Fall Creators Update が必要: タスク バー API を使うには、SDK 16299 をターゲットとし、ビルド 16299 以降を実行している必要があります。

重要な API: TaskbarManager クラス

どのようなときに、タスク バーへのアプリのピン留めをユーザーに求める必要があるか?

TaskbarManager クラスを使うと、アプリのタスク バーへのピン留めをユーザーに要求できます。ユーザーは要求を承認する必要があります。 多大な努力を払って構築した素晴らしいアプリを、タスク バーにピン留めするようユーザーにお願いできるようになりました。 ただし、コードに進む前に、エクスペリエンスを設計するときは次のような点に留意してください。

  • を行う。あなたのアプリでは、明確な行動喚起を行うことで、邪魔にならず、簡単に切り離せるUXを作りましょう。 この目的にはダイアログやポップアップは使わないようにします。 アクセシビリティ対応のピン留めアイコンまたは同様の UX が推奨されますが、必須ではありません。
  • ユーザーにピン留めを求める前に、アプリをユーザーにとって価値のあるものにします
  • タイルが既にピン留めされている場合、またはデバイスがピン留めをサポートしていない場合は、ユーザーにアプリのピン留めを求めてはなりません。 (ピン留めがサポートされているかどうかを判断する方法については、この記事で説明します。)
  • アプリのピン留めをユーザーに繰り返し求めてはなりません (ユーザーが困る可能性があります)。
  • ユーザーと明確にやり取りせずに、またはアプリが最小化されているときや開かれていないときに、ピン留め API を呼び出してはなりません。 プロセスを機能させるには、アプリがフォアグラウンドになっている必要があります。
  • インストーラーを使って API を呼び出してはなりません

制限付きアクセス機能 (LAF) の承認

重要

タスクバーのピン留めはアクセス制限機能ですLimitedAccessFeaturesクラス). アンロックトークンに関するお問い合わせ先 マイクロソフトサポート

1. 必要な API があるかどうかを調べる

UWP

アプリで以前のバージョンの Windows 10 をサポートする場合は、TaskbarManager クラスを使用できるかどうかを調べる必要があります。 ApiInformation.IsTypePresent method を使ってこの確認を実行できます。 TaskbarManager クラスを使用できない場合は、API の呼び出しを実行しないでください。

if (ApiInformation.IsTypePresent("Windows.UI.Shell.TaskbarManager"))
{
    // Taskbar APIs exist!
}

else
{
    // Older version of Windows, no taskbar APIs
}

Win32

WIn32 デスクトップ アプリから TaskbarManager を使用する場合は、デスクトップ アプリのサポートがあるかどうかを調べる必要があります。 を探すことができる。TaskbarManagerマーカ・インターフェースITaskbarManagerDesktopAppSupportStatics活性化工場でこのチェックを行う。 このインターフェイスを使用できない場合は、デスクトップ アプリから TaskbarManager を使用できません。

if (winrt::try_get_activation_factory<winrt::Windows::UI::Shell::TaskbarManager, winrt::Windows::UI::Shell::ITaskbarManagerDesktopAppSupportStatics>())
{
    // TaskbarManager desktop app support is available.
}
else
{
    // TaskbarManager desktop app support is not available.
}

2. タスク バーが存在することと、ピン留めが許可されていることを調べる

Windows アプリはさまざまなデバイスで実行できます。それらのすべてがタスクバーをサポートするとは限りません。 現時点では、デスクトップ デバイスのみがタスク バーをサポートしています。 さらに、アプリでピン留めを要求できても、ピン留めがいつでも許可されるとは限りません。 ユーザーを混乱させないため、UX を表示する前に、ピン留めが許可されるかどうかをアプリで調べることをお勧めします。

タスク バーを使用できても、ユーザーのコンピューター上のグループ ポリシーでタスク バーのピン留めが無効になっている可能性があります。 そのため、アプリのピン留めを試みる前に、タスク バーへのピン留めがサポートされているかどうかを調べる必要があります。 タスク バーが存在し、ピン留めが許可されている場合、TaskbarManager.IsPinningAllowed プロパティは true を返します。

// Check if taskbar allows pinning, apps may request pinning, but pinning may not be allowed at any given time. It is suggested that apps check whether pinning is allowed before a UX is surfaced in order to prevent confusing users.

bool isPinningAllowed = TaskbarManager.GetDefault().IsPinningAllowed;

重要

また、ピン留め要求が許可されるために、呼び出しが実際に行われる時点で満たされている必要がある要件もあります。

  • アプリがフォアグラウンドになっている
  • [スタート] メニューにアプリのエントリがある

これらの要件が満たされていない場合、例外は発生せず、ピン留め要求が拒否されるだけです。 IsPinningAllowed を呼び出して、ピン留め要求 (プロンプト) が許可されるかどうかを判断できます。

Note

アプリをタスク バーにピン留めせず、タスク バーを使用できるかどうかだけを確認したい場合は、TaskbarManager.IsSupported プロパティを使います。

3. アプリが現在タスク バーにピン留めされているかどうかを調べる

アプリが既にタスク バーにピン留めされている場合は、アプリをタスク バーにピン留めできるようにユーザーに依頼しても明らかに無意味です。 ユーザーに依頼する前に、TaskbarManager.IsCurrentAppPinnedAsync メソッドを使って、アプリが既にピン留めされているかどうかを確認できます。

// Check whether your app is currently pinned
bool isPinned = await TaskbarManager.GetDefault().IsCurrentAppPinnedAsync();

if (isPinned)
{
    // The app is already pinned--no point in asking to pin it again!
}
else
{
    //The app is not pinned.
}

4.アプリをピン留めする

タスク バーが存在し、ピン留めが許可されていて、現在アプリがピン留めされていない場合は、アプリをピン留めできることをユーザーに知らせる控えめなヒントを表示できます。 たとえば、UI のどこかにユーザーがクリックできるピン アイコンを表示できます。

ピン留めを勧める UI をユーザーがクリックした場合は、TaskbarManager.RequestPinCurrentAppAsync メソッドを呼び出します。 このメソッドでは、タスク バーへのアプリのピン留めの確認をユーザーに求めるダイアログが表示されます。

重要

これはフォアグラウンド UI スレッドから呼び出す必要があります。そうしないと、例外がスローされます。

// Request to be pinned to the taskbar.
bool isPinned = await TaskbarManager.GetDefault().RequestPinCurrentAppAsync();

Pin dialog

このメソッドからは、アプリがタスク バーにピン留めされたかどうかを示すブール値が返されます。 アプリが既にピン留めされていた場合は、メソッドはダイアログをユーザーに表示しないですぐに true を返します。 ユーザーがダイアログで [いいえ] をクリックした場合、またはアプリをタスク バーにピン留めできない場合、メソッドは false を返します。 それ以外の場合は、ユーザーは [はい] をクリックして、アプリはピン留めされており、API は true を返します。

リソース