Wil*_*iam 1 c++ winapi uwp desktop-bridge
我首先想到的是使用GetPackageFamilyName()和查找ERROR_SUCCESSVS APPMODEL_ERROR_NO_PACKAGE.
但是,我需要支持Windows 7,这使得GetPackageFamilyName()无法使用.
有没有一个像样的替代方法?也许在注册表中的任何东西?
用于在运行时动态GetProcAddress()加载GetPackageFamilyName(),例如:
typedef LONG WINAPI (*LPFN_GPFN)(HANDLE, UINT32*, PWSTR);
bool bIsUWP = false;
LPFN_GPFN lpGetPackageFamilyName = (LPFN_GPFN) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "GetPackageFamilyName");
if (lpGetPackageFamilyName)
{
UINT32 size = 0;
if (lpGetPackageFamilyName(GetCurrentProcess(), &size, NULL) == ERROR_INSUFFICIENT_BUFFER)
bIsUWP = true;
}
if (bIsUWP)
{
//...
}
else
{
//...
}
Run Code Online (Sandbox Code Playgroud)
可替换地,可以考虑使用的一个GetCurentPackage...()功能(GetCurrentPackageFamilyName(),GetCurrentPackageId(),GetCurrentPackageInfo()等),而不是使用GetPackageFamilyName()与HANDLE到调用过程.