Пример #1
0
HRESULT AudioSessionService::GetAppProperties(PCWSTR pszAppId, PWSTR* ppszName, PWSTR* ppszIcon, ULONG *background)
{
	*ppszIcon = nullptr;
	*ppszName = nullptr;
	*background = 0;

	CComPtr<IShellItem2> item;
	FAST_FAIL(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, KF_FLAG_DONT_VERIFY, pszAppId, IID_PPV_ARGS(&item)));

	CComHeapPtr<wchar_t> itemName;
	FAST_FAIL(item->GetString(PKEY_ItemNameDisplay, &itemName));
	FAST_FAIL(item->GetUInt32(PKEY_AppUserModel_Background, background));

	CComHeapPtr<wchar_t> installPath;
	FAST_FAIL(item->GetString(PKEY_AppUserModel_PackageInstallPath, &installPath));

	CComHeapPtr<wchar_t> iconPath;
	FAST_FAIL(item->GetString(PKEY_AppUserModel_Icon, &iconPath));

	wchar_t fullPath[MAX_PATH] = {};
	FAST_FAIL(PathCchCombine(fullPath, ARRAYSIZE(fullPath), installPath, iconPath));

	CStringW path(fullPath);

	if (!PathFileExists(path))
	{
		path.Replace(L".png", L".scale-100.png");
	}

	FAST_FAIL(SHStrDup(path, ppszIcon));
	*ppszName = itemName.Detach();
	return S_OK;
}
Пример #2
0
HRESULT AudioSessionService::GetAppProperties(PCWSTR pszAppId, PWSTR* ppszName, PWSTR* ppszIcon, ULONG *background)
{
    *ppszIcon = nullptr;
    *ppszName = nullptr;
    *background = 0;

    CComPtr<IShellItem2> item;
    FAST_FAIL(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, KF_FLAG_DONT_VERIFY, pszAppId, IID_PPV_ARGS(&item)));

    CComHeapPtr<wchar_t> itemName;
    FAST_FAIL(item->GetString(PKEY_ItemNameDisplay, &itemName));
    FAST_FAIL(item->GetUInt32(PKEY_AppUserModel_Background, background));

    CComHeapPtr<wchar_t> installPath;
    FAST_FAIL(item->GetString(PKEY_AppUserModel_PackageInstallPath, &installPath));

    CComHeapPtr<wchar_t> iconPath;
    FAST_FAIL(item->GetString(PKEY_AppUserModel_Icon, &iconPath));

    CComHeapPtr<wchar_t> fullPackagePath;
    FAST_FAIL(item->GetString(PKEY_AppUserModel_PackageFullName, &fullPackagePath));

    CComPtr<IMrtResourceManager> mrtResMgr;
    FAST_FAIL(CoCreateInstance(__uuidof(MrtResourceManager), nullptr, CLSCTX_INPROC, IID_PPV_ARGS(&mrtResMgr)));
    FAST_FAIL(mrtResMgr->InitializeForPackage(fullPackagePath));

    CComPtr<IResourceMap> resourceMap;
    FAST_FAIL(mrtResMgr->GetMainResourceMap(IID_PPV_ARGS(&resourceMap)));

    CComHeapPtr<wchar_t> resolvedIconPath;
    FAST_FAIL(resourceMap->GetFilePath(iconPath, &resolvedIconPath));

    *ppszIcon = resolvedIconPath.Detach();
    *ppszName = itemName.Detach();
    return S_OK;
}