Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie przedstawiono sposób tworzenia skrótu dla aplikacji, przypisywania jej identyfikatora AppUserModelID i instalowania go na ekranie startowym. Zdecydowanie zalecamy wykonanie tej czynności w Instalatorze Windows, a nie w kodzie aplikacji. Bez prawidłowego skrótu zainstalowanego na ekranie startowym lub we Wszystkie programy nie można wyświetlić powiadomienia toast z aplikacji klasycznej.
Uwaga / Notatka
Przykładowe metody używane w tym temacie pochodzą z przykładu powiadomienia na pulpicie.
Co musisz wiedzieć
Technologie
- COM
Wymagania wstępne
- Biblioteki
- C++: Runtime.object.lib
- C#: Windows.Winmd
- C#: Pakiet kodu interfejsu API systemu Windows dla programu Microsoft .NET Framework
- Wersja programu Microsoft Visual Studio, która obsługuje co najmniej system Windows 8
Instrukcje
Krok 1: Przygotować skrót do utworzenia
W tym przykładzie najpierw określa ścieżkę folderu danych aplikacji użytkownika za pomocą funkcji GetEnvironmentVariable . Następnie komponuje pełną ścieżkę do skrótu, określa, że skrót tej nazwy nie istnieje jeszcze w tej lokalizacji i przekazuje te informacje do innej metody, która tworzy i instaluje skrót.
Należy pamiętać, że skrót można wdrożyć dla poszczególnych użytkowników lub aplikacji.
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;
}
Krok 2. Tworzenie skrótu i instalowanie go na ekranie startowym
W tym przykładzie także pobierany jest magazyn właściwości skrótu i ustawiana jest wymagana właściwość System.AppUserModel.ID z zmiennej zdefiniowanej wcześniej, 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;
}
Uwagi
Alternatywą dla podejścia przedstawionego w tym temacie jest użycie frameworku, takiego jak Windows Installer XML (WiX), aby wygenerować skrót i wdrożyć go jako część Instalatora Windows. W takim przypadku ten kod powinien być uwzględniony w pliku MSI, a nie w kodzie aplikacji. Aby uzyskać więcej informacji, zobacz przykładowy plik konfiguracji WiX dołączony do przykładu Wysyłanie toast powiadomień z aplikacji komputerowych.
Tematy pokrewne
-
Wysyłanie powiadomień toast z przykładowych aplikacji klasycznych
-
identyfikatory modelu użytkownika aplikacji (AppUserModelIDs)
-
Instrukcje: instalowanie narzędzi XML instalatora Windows (WiX)