Закрепление приложения на панели задач

Теперь вы можете программно запросить пользователей, чтобы закрепить приложение Win32 или UWP на панели задач, аналогично тому, как можно закрепить приложение на меню . Кроме того, вы можете проверка, закреплено ли приложение в настоящее время и позволяет ли панель задач закреплять.

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

Внимание

Требуется обновление Fall Creators Update: необходимо установить целевой пакет SDK 16299 и запустить сборку 16299 или более поздней версии, чтобы использовать API панели задач.

Важные API: класс TaskbarManager

Когда вы попросите пользователя закрепить приложение на панели задач?

Класс TaskbarManager позволяет пользователю закрепить приложение на панели задач. Пользователь должен утвердить запрос. Вы много усилий в создании звездного приложения, и теперь у вас есть возможность попросить пользователя закрепить его на панели задач. Но прежде чем мы рассмотрим код, вот некоторые вещи, которые следует учитывать, так как вы разрабатываете свой опыт:

  • Создавайте неразрушительный и легко закрываемый ПОЛЬЗОВАТЕЛЬСКИЙ интерфейс в приложении с четким призывом к действию. Избегайте использования диалогов и всплывающих окон для этой цели. Рекомендуется использовать значки закрепления со специальными возможностями или аналогичные пользовательские интерфейсы.
  • Убедитесь, что приложение имеет значение для пользователя, прежде чем попросить пользователя закрепить его.
  • Не попросите пользователя закрепить приложение, если плитка уже закреплена или устройство не поддерживает его. (В этой статье объясняется, как определить, поддерживается ли закрепление.)
  • Не повторяйте запрашивать у пользователя закрепление приложения (вероятно, они раздражаются).
  • Не вызывайте API пин-кода без явного взаимодействия с пользователем или когда приложение свернуто или не открыто. Приложение должно находиться на переднем плане, чтобы процесс работал.
  • Не используйте установщики для вызова API.

Утверждение функции ограниченного доступа (LAF)

Внимание

Закрепление панели задач — это функция ограниченного доступа (см . класс LimitedAccessFeatures). Для получения дополнительных сведений или запроса маркера разблокировки обратитесь к служба поддержки Майкрософт.

1. Проверьте, существуют ли необходимые API

UWP

Если ваше приложение поддерживает более старые версии Windows 10, необходимо проверка, доступен ли TaskbarManager класс. Для выполнения этой проверка можно использовать метод ApiInformation.IsTypePresent. TaskbarManager Если класс недоступен, не выполняйте вызовы API.

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

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

Win32

Если вы хотите использовать TaskbarManager классическое приложение WIn32, вам потребуется проверка наличие поддержки классических приложений. Чтобы выполнить эту проверка, можно найти интерфейс маркера ITaskbarManagerDesktopAppSupportStatics на фабрике TaskbarManager активации. Если этот интерфейс недоступен, вы не сможете использовать 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 могут работать на различных устройствах; не все они поддерживают панель задач. Сейчас только настольные устройства поддерживают панель задач. Кроме того, приложения могут запрашивать закрепление, но закрепление может быть запрещено в любое время. Предполагается, что приложения проверка, разрешено ли закрепление перед отображением пользовательского интерфейса, чтобы предотвратить путаницу пользователей.

Даже если панель задач доступна, групповая политика на компьютере пользователя может отключить закрепление панели задач. Таким образом, прежде чем пытаться закрепить приложение, необходимо проверка, поддерживается ли закрепление на панели задач. Свойство 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 можно вызвать, чтобы определить, разрешен ли запрос пин-кода (запрос запроса).

Примечание.

Если вы не хотите закрепить приложение на панели задач и просто хотите узнать, доступна ли панель задач, используйте свойство 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. Закрепление приложения

Если панель задач присутствует и закрепление разрешено, и приложение в настоящее время не закреплено, может потребоваться показать тонкий совет, чтобы сообщить пользователям, что они могут закрепить приложение. Например, можно отобразить значок закрепления в пользовательском интерфейсе, который пользователь может щелкнуть.

Если пользователь щелкает пользовательский интерфейс предложения пин-кода, вызовите метод TaskbarManager.RequestPinCurrentAppAsync . Этот метод отображает диалоговое окно, которое просит пользователя подтвердить, что приложение закреплено на панели задач.

Внимание

Это должно вызываться из потока пользовательского интерфейса переднего плана, в противном случае создается исключение.

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

Pin dialog

Этот метод возвращает логическое значение, указывающее, закреплено ли приложение на панели задач. Если приложение уже закреплено, метод немедленно возвращается true без отображения диалогового окна пользователю. Если пользователь нажимает кнопку "нет" в диалоговом окне или закрепление приложения на панели задач запрещено, метод возвращается false. В противном случае пользователь щелкнул да, и приложение было закреплено, и API вернет true.

Ресурсы