Aktivieren von Desktoppopupbenachrichtigungen über eine AppUserModelID

In diesem Thema erfahren Sie, wie Sie eine Verknüpfung für Ihre App erstellen, ihr eine AppUserModelIDzuweisen und sie im Startbildschirm. Es wird dringend empfohlen, dies im Windows Installer und nicht im Code Ihrer App zu tun. Ohne eine gültige Verknüpfung, die im Startbildschirm oder unter Alle Programme installiert ist, können Sie keine Popupbenachrichtigung von einer Desktop-App aus erstellen.

Hinweis

Die in diesem Thema verwendeten Beispielmethoden sind aus dem Desktop-Popupbeispiel entnommen.

Wichtige Informationen

Technologien

  • COM

Voraussetzungen

  • Bibliotheken
    • C++: Runtime.object.lib
    • C # : Windows. Winmd
  • C # : Windows API Code Pack für Microsoft .NET Framework
  • Eine Version von Microsoft Visual Studio, die mindestens Windows 8

Instructions

Schritt 1: Vorbereiten der zu erstellenden Verknüpfung

In diesem Beispiel wird zunächst der Pfad des App-Datenordners des Benutzers über die GetEnvironmentVariable-Funktion bestimmt. Anschließend wird der vollständige Pfad zur Verknüpfung erstellt, ermittelt, dass an diesem Speicherort noch keine Verknüpfung mit diesem Namen vorhanden ist, und übergibt diese Informationen an eine andere Methode, die die Verknüpfung erstellt und installiert.

Beachten Sie, dass die Verknüpfung pro Benutzer oder pro App bereitgestellt werden kann.

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

Schritt 2: Erstellen Sie die Verknüpfung, und installieren Sie sie im Startbildschirm

In diesem Beispiel wird auch der Eigenschaftenspeicher der Verknüpfung abgerufen und die erforderliche System.AppUserModel.ID-Eigenschaft aus einer zuvor definierten Variablen AppID festgelegt.

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

Bemerkungen

Als Alternative zum in diesem Thema gezeigten Ansatz können Sie ein Framework wie das Windows Installer XML (WiX) verwenden, um die Verknüpfung zu generieren und als Teil des Windows Installers bereitzustellen. In diesem Fall sollte dieser Code in der MSI und nicht im Code der App enthalten sein. Weitere Informationen finden Sie in der WiX-Beispielkonfigurationsdatei, die im Beispiel Senden von Popupbenachrichtigungen von Desktop-Apps enthalten ist.

Schnellstart: Senden einer Popupbenachrichtigung vom Desktop

Beispiel zum Senden von Toastbenachrichtigungen aus Desktop-Apps

Anwendungsbenutzermodell-IDs (AppUserModelIDs)

How to: Install the Windows Installer XML (WiX) Tools

Popup-XML-Schema

Übersicht über Popupbenachrichtigungen

Schnellstart: Senden einer Popupbenachrichtigung

Schnellstart: Senden einer Popup-Pushbenachrichtigung

Richtlinien und Checkliste für Popupbenachrichtigungen

Hinzufügen von Bildern zu einer Popupvorlage

Überprüfen der Einstellungen für Popupbenachrichtigungen

Auswählen und Verwenden einer Popupvorlage

Behandeln der Aktivierung von Popupbenachrichtigungen

Aktivieren von Popupbenachrichtigungen

Auswählen einer Popupvorlage

Audiooptionen für Popups