Partager via


Guide pratique pour activer les notifications toast de bureau via un AppUserModelID

Cette rubrique vous montre comment créer un raccourci pour votre application, lui attribuer un AppUserModelID et l’installer dans l’écran d’accueil. Nous vous recommandons vivement de le faire dans Windows Installer plutôt que dans le code de votre application. Sans un raccourci valide installé dans l’écran d’accueil ou dans Tous les programmes, vous ne pouvez pas déclencher une notification toast à partir d’une application de bureau.

Notes

Les exemples de méthodes utilisées dans cette rubrique sont extraits de l’exemple toast desktop.

 

Bon à savoir

Technologies

  • COM

Prérequis

  • Bibliothèques
    • C++: Runtime.object.lib
    • C# : Windows.Winmd
  • C# : Windows API Code Pack pour Microsoft .NET Framework
  • Version de Microsoft Visual Studio qui prend en charge au moins Windows 8

Instructions

Étape 1 : Préparer le raccourci à créer

Cet exemple détermine d’abord le chemin d’accès du dossier de données d’application de l’utilisateur via la fonction GetEnvironmentVariable . Il compose ensuite le chemin d’accès complet au raccourci, détermine qu’un raccourci de ce nom n’existe pas déjà à cet emplacement et transmet ces informations à une autre méthode qui crée et installe le raccourci.

Notez que le raccourci peut être déployé par utilisateur ou par application.

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

Étape 2 : Créer le raccourci et l’installer dans l’écran d’accueil

Cet exemple récupère également le magasin de propriétés du raccourci et définit la propriété System.AppUserModel.ID requise à partir d’une variable précédemment définie, 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;
}

Notes

En guise d’alternative à l’approche décrite dans cette rubrique, vous pouvez utiliser une infrastructure telle que Windows Installer XML (WiX) pour générer le raccourci et le déployer dans le cadre de Windows Installer. Dans ce cas, ce code doit être inclus dans le MSI plutôt que dans le code de l’application. Pour plus d’informations, consultez l’exemple de fichier de configuration WiX inclus dans l’exemple Envoyer des notifications toast à partir d’applications de bureau .

Démarrage rapide : Envoi d’une notification toast à partir du bureau

Exemple d’envoi de notifications toast à partir d’applications de bureau

ID de modèle utilisateur d’application (AppUserModelIDs)

Guide pratique pour installer les outils Windows Installer XML (WiX)

Schéma XML toast

Vue d’ensemble de la notification Toast

Démarrage rapide : Envoi d’une notification toast

Démarrage rapide : Envoi d’une notification push toast

Recommandations et liste de contrôle pour les notifications toast

Comment ajouter des images à un modèle toast

Guide pratique pour case activée les paramètres de notification toast

Comment choisir et utiliser un modèle toast

Comment gérer l’activation à partir d’une notification toast

Comment opter pour les notifications toast

Choix d’un modèle toast

Options toast audio