Delen via


Hoe bureaubladmeldingen in te schakelen via een AppUserModelID

In dit onderwerp wordt beschreven hoe u een snelkoppeling voor uw app maakt, hoe u deze toewijst aan een AppUserModelIDen installeert in het startscherm. We raden u ten zeerste aan dit te doen in Windows Installer in plaats van in de code van uw app. Zonder een geldige snelkoppeling die is geïnstalleerd in het startscherm of in Alle programma's, kunt u geen toast notificatie weergeven vanuit een desktop-applicatie.

Notitie

De voorbeeldmethoden die in dit onderwerp worden gebruikt, zijn afkomstig uit het desktoptoast-voorbeeld.

 

Wat u moet weten

Technologieën

  • COM

Voorwaarden

  • Bibliotheken
    • C++: Runtime.object.lib
    • C#: Windows.Winmd
  • C#: Windows API-codepakket voor Microsoft .NET Framework
  • Een versie van Microsoft Visual Studio die ten minste Windows 8 ondersteunt

Aanwijzingen

Stap 1: De snelkoppeling voorbereiden die moet worden gemaakt

In dit voorbeeld wordt eerst het pad van de app-gegevensmap van de gebruiker bepaald via de functie GetEnvironmentVariable. Vervolgens wordt het volledige pad naar de snelkoppeling samengesteld, wordt bepaald dat er nog geen snelkoppeling van die naam op die locatie bestaat en die informatie doorgeeft aan een andere methode waarmee de snelkoppeling wordt gemaakt en geïnstalleerd.

Houd er rekening mee dat de snelkoppeling per gebruiker of per app kan worden geïmplementeerd.

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

Stap 2: Maak de snelkoppeling en installeer deze in het startscherm

In dit voorbeeld wordt ook het eigenschappenarchief van de snelkoppeling opgehaald en wordt de vereiste System.AppUserModel.ID eigenschap van een eerder gedefinieerde variabele AppIDingesteld.

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

Opmerkingen

Als alternatief voor de benadering die in dit onderwerp wordt weergegeven, kunt u een framework zoals de Windows Installer XML (WiX) gebruiken om de snelkoppeling te genereren en te implementeren als onderdeel van Windows Installer. In dat geval moet deze code worden opgenomen in de MSI in plaats van in de code van de app. Voor meer informatie, zie het voorbeeld WiX-configuratiebestand dat is opgenomen in het Pop-upmeldingen verzenden vanuit desktop-apps voorbeeld.

Quickstart: Een melding zenden vanaf het bureaublad

Voorbeeld van het verzenden van pop-upmeldingen vanuit bureaublad-apps

nl-NL: Application User Model-ID’s (AppUserModelIDs)

Hoe de Windows Installer XML (WiX) Hulpprogramma's te installeren

XML-schema voor meldingen

Overzicht van toastmeldingen

Snelle start: Een melding verzenden

Snelle start: Een toastmelding verzenden

Richtlijnen en checklist voor toastmeldingen

Hoe afbeeldingen toe te voegen aan een meldingssjabloon

** De instelling voor toastmeldingen controleren

Een toastsjabloon kiezen en gebruiken

Hoe activering van een toastbericht afhandelen

Hoe je je kunt aanmelden voor toastmeldingen

een toastsjabloon kiezen

audioopties voor meldingen