Freigeben über


Aktivieren von Desktoppopupbenachrichtigungen über eine AppUserModelID

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

Hinweis

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

 

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

Anweisungen

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, bestimmt, dass an diesem Speicherort noch keine Verknüpfung mit diesem Namen vorhanden ist, und diese Informationen an eine andere Methode übergeben, 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 der Verknüpfung und Installation auf dem Startbildschirm

In diesem Beispiel wird auch der Eigenschaftenspeicher der Verknüpfung abgerufen und die erforderliche System.AppUserModel.ID-Eigenschaft aus einer zuvor definierten Variablen festgelegt. 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;
}

Bemerkungen

Alternativ zum in diesem Thema gezeigten Ansatz können Sie ein Framework wie windows Installer XML (WiX) verwenden, um die Verknüpfung zu generieren und als Teil des Windows Installer bereitzustellen. In diesem Fall sollte dieser Code in der MSI und nicht im Code der App enthalten sein. Weitere Informationen finden Sie in der Beispiel-WiX-Konfigurationsdatei, 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)

Vorgehensweise: Installieren der Windows Installer-XML-Tools (WiX)

XML-Popupschema

Übersicht über Popupbenachrichtigungen

Schnellstart: Senden einer Popupbenachrichtigung

Schnellstart: Senden einer Popup-Pushbenachrichtigung

Richtlinien und Prüfliste für Popupbenachrichtigungen

Hinzufügen von Bildern zu einer Popupvorlage

Überprüfen der Popupbenachrichtigungseinstellungen

Auswählen und Verwenden einer Popupvorlage

Behandeln der Aktivierung über eine Popupbenachrichtigung

Aktivieren von Popupbenachrichtigungen

Auswählen einer Popupvorlage

Popupaudiooptionen