Udostępnij przez


Jak włączyć wyskakujące powiadomienia pulpitu za pomocą identyfikatora AppUserModelID

W tym temacie przedstawiono sposób tworzenia skrótu dla aplikacji, przypisywania jej identyfikatora AppUserModelID i instalowania go na ekranie startowym. Zdecydowanie zalecamy wykonanie tej czynności w Instalatorze Windows, a nie w kodzie aplikacji. Bez prawidłowego skrótu zainstalowanego na ekranie startowym lub we Wszystkie programy nie można wyświetlić powiadomienia toast z aplikacji klasycznej.

Uwaga / Notatka

Przykładowe metody używane w tym temacie pochodzą z przykładu powiadomienia na pulpicie.

 

Co musisz wiedzieć

Technologie

  • COM

Wymagania wstępne

  • Biblioteki
    • C++: Runtime.object.lib
    • C#: Windows.Winmd
  • C#: Pakiet kodu interfejsu API systemu Windows dla programu Microsoft .NET Framework
  • Wersja programu Microsoft Visual Studio, która obsługuje co najmniej system Windows 8

Instrukcje

Krok 1: Przygotować skrót do utworzenia

W tym przykładzie najpierw określa ścieżkę folderu danych aplikacji użytkownika za pomocą funkcji GetEnvironmentVariable . Następnie komponuje pełną ścieżkę do skrótu, określa, że skrót tej nazwy nie istnieje jeszcze w tej lokalizacji i przekazuje te informacje do innej metody, która tworzy i instaluje skrót.

Należy pamiętać, że skrót można wdrożyć dla poszczególnych użytkowników lub aplikacji.

HRESULT DesktopToastsApp::TryCreateShortcut()
{
    wchar_t shortcutPath[MAX_PATH];
    DWORD charWritten = GetEnvironmentVariable(L"APPDATA", shortcutPath, MAX_PATH);
    HRESULT hr = charWritten > 0 ? S_OK : E_INVALIDARG;

    if (SUCCEEDED(hr))
    {
        errno_t concatError = wcscat_s(shortcutPath, ARRAYSIZE(shortcutPath), L"\\Microsoft\\Windows\\Start Menu\\Programs\\Desktop Toasts App.lnk");
 
        hr = concatError == 0 ? S_OK : E_INVALIDARG;
        if (SUCCEEDED(hr))
        {
            DWORD attributes = GetFileAttributes(shortcutPath);
            bool fileExists = attributes < 0xFFFFFFF;

            if (!fileExists)
            {
                hr = InstallShortcut(shortcutPath);  // See step 2.
            }
            else
            {
                hr = S_FALSE;
            }
        }
    }
    return hr;
}

Krok 2. Tworzenie skrótu i instalowanie go na ekranie startowym

W tym przykładzie także pobierany jest magazyn właściwości skrótu i ustawiana jest wymagana właściwość System.AppUserModel.ID z zmiennej zdefiniowanej wcześniej, AppID.

HRESULT DesktopToastsApp::InstallShortcut(_In_z_ wchar_t *shortcutPath)
{
    wchar_t exePath[MAX_PATH];
    
    DWORD charWritten = GetModuleFileNameEx(GetCurrentProcess(), nullptr, exePath, ARRAYSIZE(exePath));

    HRESULT hr = charWritten > 0 ? S_OK : E_FAIL;
    
    if (SUCCEEDED(hr))
    {
        ComPtr<IShellLink> shellLink;
        hr = CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&shellLink));

        if (SUCCEEDED(hr))
        {
            hr = shellLink->SetPath(exePath);
            if (SUCCEEDED(hr))
            {
                hr = shellLink->SetArguments(L"");
                if (SUCCEEDED(hr))
                {
                    ComPtr<IPropertyStore> propertyStore;

                    hr = shellLink.As(&propertyStore);
                    if (SUCCEEDED(hr))
                    {
                        PROPVARIANT appIdPropVar;
                        hr = InitPropVariantFromString(AppId, &appIdPropVar);
                        if (SUCCEEDED(hr))
                        {
                            hr = propertyStore->SetValue(PKEY_AppUserModel_ID, appIdPropVar);
                            if (SUCCEEDED(hr))
                            {
                                hr = propertyStore->Commit();
                                if (SUCCEEDED(hr))
                                {
                                    ComPtr<IPersistFile> persistFile;
                                    hr = shellLink.As(&persistFile);
                                    if (SUCCEEDED(hr))
                                    {
                                        hr = persistFile->Save(shortcutPath, TRUE);
                                    }
                                }
                            }
                            PropVariantClear(&appIdPropVar);
                        }
                    }
                }
            }
        }
    }
    return hr;
}

Uwagi

Alternatywą dla podejścia przedstawionego w tym temacie jest użycie frameworku, takiego jak Windows Installer XML (WiX), aby wygenerować skrót i wdrożyć go jako część Instalatora Windows. W takim przypadku ten kod powinien być uwzględniony w pliku MSI, a nie w kodzie aplikacji. Aby uzyskać więcej informacji, zobacz przykładowy plik konfiguracji WiX dołączony do przykładu Wysyłanie toast powiadomień z aplikacji komputerowych.

Szybki start: wysyłanie powiadomienia typu toast z pulpitu

Wysyłanie powiadomień toast z przykładowych aplikacji klasycznych

identyfikatory modelu użytkownika aplikacji (AppUserModelIDs)

Instrukcje: instalowanie narzędzi XML instalatora Windows (WiX)

Toast schemat XML

omówienie powiadomień typu toast

Szybki start: wysyłanie powiadomienia toast

Szybki start: wysyłanie powiadomienia typu toast

Wytyczne i lista kontrolna dla powiadomień toast

Jak dodać obrazy do wyskakujące szablonu

Jak sprawdzić ustawienia powiadomień toastowych

Jak wybrać i użyć szablon komunikatu typu toast

Jak obsługiwać aktywację z powiadomienia typu toast

Jak wyrazić zgodę na wyskakujące powiadomienia

Wybieranie szablonów powiadomień

opcje dźwięku powiadomień