AppUserModelID를 통해 데스크톱 알림 메시지를 사용하는 방법
이 항목에서는 앱에 대한 바로 가기를 만들고 , AppUserModelID에 할당하고, 시작 화면에 설치하는 방법을 보여줍니다. 앱 코드가 아닌 Windows Installer에서 이 작업을 수행하는 것이 좋습니다. 시작 화면 또는 모든 프로그램에 유효한 바로 가기를 설치하지 않으면 데스크톱 앱에서 알림 메시지를 표시할 수 없습니다.
참고
이 항목에서 사용되는 예제 메서드는 데스크톱 알림 샘플에서 가져옵니다.
알아야 하는 작업
기술
- COM
사전 요구 사항
- 라이브러리
- C++: Runtime.object.lib
- C#: Windows.Winmd
- C#: Microsoft .NET Framework 대한 Windows API 코드 팩
- 최소 Windows 8 지원하는 Microsoft Visual Studio 버전
지침
1단계: 만들 바로 가기 준비
이 예제에서는 먼저 GetEnvironmentVariable 함수를 통해 사용자의 앱 데이터 폴더 경로를 결정합니다. 그런 다음 바로 가기의 전체 경로를 구성하고, 해당 이름의 바로 가기가 해당 위치에 아직 없는지 확인하고, 해당 정보를 바로 가기를 만들고 설치하는 다른 메서드에 전달합니다.
바로 가기는 사용자별 또는 앱별로 배포할 수 있습니다.
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;
}
2단계: 바로 가기 만들기 및 시작 화면에 설치
또한 이 예제에서는 바로 가기의 속성 저장소를 검색하고 이전에 정의된 변수 AppID
에서 필요한 System.AppUserModel.ID 속성을 설정합니다.
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;
}
설명
이 항목에 나와 있는 방법 대신 WiX(Windows Installer XML)와 같은 프레임워크를 사용하여 바로 가기를 생성하고 Windows Installer의 일부로 배포할 수 있습니다. 이 경우 이 코드는 앱 코드가 아닌 MSI에 포함되어야 합니다. 자세한 내용은 데스크톱 앱에서 알림 메시지 보내기 샘플에 포함된 샘플 WiX 구성 파일을 참조하세요.
관련 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기