Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Verwante onderwerpen
-
Voorbeeld van het verzenden van pop-upmeldingen vanuit bureaublad-apps
-
Hoe de Windows Installer XML (WiX) Hulpprogramma's te installeren