Rögzítse az alkalmazást a tálcára

Programozott módon kérheti a felhasználókat, hogy rögzítsék a Win32- vagy WinUI-alkalmazást a tálcán, hasonlóan ahhoz, ahogyan az alkalmazást rögzítheti a Start menüben. Azt is ellenőrizheti, hogy az alkalmazása jelenleg rögzítve van-e, és hogy a tálca lehetővé teszi-e a rögzítést.

Képernyőkép egy Windows 11-feladatsávról, amelyen az ott rögzített alkalmazás látható.

Important

Fall Creators Update szükséges: Az SDK 16299-et kell célozni, és a 16299-es vagy újabb verzión kell futnia a tálca API-k használatához.

Fontos API-k: Tálcamanager osztály

Mikor kérje meg a felhasználót, hogy az alkalmazást a tálcára rögzítse?

A Tálcamanager osztály lehetővé teszi, hogy kérje meg a felhasználót, hogy rögzítse az alkalmazást a tálcán; a felhasználónak jóvá kell hagynia a kérést. Sok erőfeszítést tett egy kitűnő alkalmazás létrehozásába, és most lehetősége van arra, hogy megkérje a felhasználót, rögzítse azt a tálcára. Mielőtt azonban belemerülnénk a kódba, íme néhány dolog, amit szem előtt kell tartani a felhasználói élmény megtervezése során:

  • Alkalmazásában készítsen egy zavarásmentes és könnyen figyelmen kívül hagyható UX-t, amely egyértelmű cselekvésre való felhívást tartalmaz. Kerülje a párbeszédpanelek és lebegő panelek használatát erre a célra. Hozzáférhető rögzítési ikonok vagy hasonló UX használata ajánlott, de nem kötelező.
  • Mielőtt megkérné a felhasználót, hogy kitűzze, győződjön meg arról, hogy az alkalmazás értéket képvisel a felhasználó számára.
  • Ne kérje meg a felhasználót, hogy rögzítse az alkalmazást, ha a csempe már rögzítve van, vagy az eszköz nem támogatja azt. (Ez a cikk bemutatja, hogyan állapítható meg, hogy a rögzítés támogatott-e.)
  • Ne ismételten kérje meg a felhasználót, hogy rögzítse az alkalmazást (valószínűleg bosszankodnak).
  • Ne használd a pin API-t explicit felhasználói beavatkozás nélkül, vagy ha az alkalmazás minimálisra van csökkentve vagy nincs megnyitva. Az alkalmazásnak az előtérben kell lennie ahhoz, hogy a folyamat működjön.
  • Ne használjon telepítőket az API meghívásához.

Korlátozott hozzáférésű szolgáltatás (LAF) jóváhagyása

Important

A tálcára rögzítés a Windows egyes verzióiban korlátozott hozzáférésű szolgáltatás (lásd a LimitedAccessFeatures osztályt). További információkért vagy feloldási jogkivonat kéréséhez használja az LAF hozzáférési jogkivonat kérési űrlapot.

A korlátozott hozzáférésre vonatkozó korlátozás el lesz távolítva a Windows rendszerből a KB5074105 frissítéstől kezdődően (operációsrendszer-buildszámok: 26200.7705 és 26100.7705).

A LAF-hozzáférési jogkivonatot igénylő Windows-verziókban a tálcára rögzítési API-k meghívása előtt először meg kell hívnia a LimitedAccessFeatures.TryUnlockFeature metódust. A későbbi verziókban a tálcára rögzítés elérése nincs korlátozva, és közvetlenül meghívhatja a tálcára rögzítési API-kat.

Ezzel a kóddal megállapíthatja, hogy hívnia TryUnlockFeature kell-e, vagy kihagyhatja a hívást, és rögzítheti az alkalmazást LAF hozzáférési jogkivonat nélkül.

 // LAF API seed value for com.microsoft.windows.taskbar.pin
 constexpr PCWSTR c_taskbarPinLAFSeedValue =
     L"4096B239A7295B635C090E647E867B5707DA6AB6CB78340B01FE4E0C8F4953D4";
 
 // Returns true if a Limited Access Feature token is required
 // for taskbar pinning on this machine.
 inline bool IsLAFTokenRequiredForTaskbarPinning()
 {
     wil::unique_hkey hKey;
     if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
             L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\AppModel"
             L"\\LimitedAccessFeatures\\com.microsoft.windows.taskbar.pin",
             0, KEY_READ, &hKey) != ERROR_SUCCESS)
     {
         return false;
     }
 
     DWORD value = 0;
     DWORD size = sizeof(value);
     LSTATUS status = RegQueryValueExW(hKey.get(),
         c_taskbarPinLAFSeedValue,
         nullptr, nullptr,
         reinterpret_cast<LPBYTE>(&value), &size);
 
     return (status == ERROR_SUCCESS) && (value != 0);
 }

1. Ellenőrizze, hogy léteznek-e a szükséges API-k

Win32

Ha asztali Win32-alkalmazásból szeretné használni TaskbarManager , akkor ellenőriznie kell, hogy az asztali alkalmazás támogatása jelen van-e. Az aktiválási ITaskbarManagerDesktopAppSupportStatics előállító jelölőfelületét TaskbarManager megkeresve elvégezheti ezt az ellenőrzést. Ha ez a felület nem érhető el, akkor az asztali alkalmazásból nem fogja tudni használni 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. Ellenőrizze, hogy a tálca jelen van-e, és engedélyezi-e a rögzítést

A Windows-alkalmazások sokféle eszközön futtathatók; nem mindegyik támogatja a tálcát. Jelenleg csak asztali számítógépek támogatják a tálcát. Emellett az alkalmazások kérhetik a rögzítést, de a rögzítést egy adott időpontban nem lehet engedélyezni. Javasoljuk, hogy az alkalmazások ellenőrizzék, hogy engedélyezett-e a rögzítés a felhasználói élmény megjelenése előtt, hogy elkerüljük a felhasználók összezavarását.

Még ha elérhető is a tálca, a felhasználó gépén lévő csoportházirend letilthatja a tálcára való rögzítést. Ezért mielőtt megkísérli rögzíteni az alkalmazást, ellenőriznie kell, hogy támogatott-e a tálcára való rögzítés. A TaskbarManager.IsPinningAllowed tulajdonság akkor ad értéket true, ha a tálca jelen van és engedélyezi a rögzítést.

// 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;

Important

Vannak olyan követelmények is, amelyeket a hívás tényleges indításakor teljesíteni kell ahhoz, hogy a pin-kód kérése engedélyezve legyen:

  • Az alkalmazás előtérben van
  • Az alkalmazás a Start menübejegyzéssel rendelkezik
  • Az értesítések megjelenítéséhez a felhasználónak engedélyeznie kell a rendszerértesítéseket. Javasoljuk, hogy ezt a követelményt jelenítse meg az alkalmazás UX-ében a felhasználók számára.

Ezek a követelmények nem eredményeznek kivételt, ha nem teljesülnek, a pin-kód kérése egyszerűen le lesz tiltva. IsPinningAllowed meg lehet hívni annak megállapításához, hogy engedélyezve lesz-e a pin-kódra vonatkozó kérés (prompt).

Note

Ha nem szeretné rögzíteni az alkalmazást a tálcán, és csak azt szeretné megtudni, hogy elérhető-e a tálca, használja a TaskbarManager.IsSupported tulajdonságot .

3. Ellenőrizze, hogy az alkalmazás jelenleg rögzítve van-e a tálcán

Nyilvánvaló, hogy nincs értelme arra kérni a felhasználót, hogy rögzítse az alkalmazást a tálcára, ha az már ott van. A TaskbarManager.IsCurrentAppPinnedAsync metódussal ellenőrizheti, hogy az alkalmazás már rögzítve van-e a felhasználó megkérdezése előtt.

// 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. Az alkalmazás rögzítése

Ha a tálca jelen van, és a rögzítés engedélyezett, és az alkalmazás jelenleg nincs rögzítve, érdemes egy apró tippet megjeleníteni, hogy a felhasználók tudják, hogy rögzíthetik az alkalmazást. Például megjeleníthet egy kitűző ikont valahol a felhasználói felületen, amelyekre a felhasználó kattinthat.

Ha a felhasználó a pin-kód javaslat felhasználói felületére kattint, hívja meg a TaskbarManager.RequestPinCurrentAppAsync metódust . Ez a módszer egy párbeszédpanelt jelenít meg, amely arra kéri a felhasználót, hogy erősítse meg, szeretné-e az alkalmazást rögzíteni a tálcára.

Important

Az előtérben futó felhasználói felületi szálból kell ezt meghívni, ellenkező esetben kivételt fog dobni.

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

Rögzítés párbeszédpanel

Ez a módszer egy logikai értéket ad vissza, amely azt jelzi, hogy az Ön alkalmazása mostantól rögzítve van-e a tálcán. Ha az alkalmazás már rögzítve van, a metódus azonnal visszatér true anélkül, hogy megjelenítene egy párbeszédpanelt a felhasználónak. Ha a felhasználó a párbeszédpanelen a "nem" gombra kattint, vagy az alkalmazás rögzítése a tálcára nem engedélyezett, a metódus visszatér false. Ellenkező esetben a felhasználó az igen gombra kattintott, és az alkalmazás rögzítve lett, és az API vissza fog térni true.

Resources