在平时的编程中,因为需要使用到Windows Media SDK或者播放ASF/WMV等文件时,需要判别Windows Media Player的版本号。以下就通过编程来实现此功能。
Windows Media Player的版本的判定通过
wmvcore.dll来做。
BOOL IsMediaPlay9Installed()
{
BOOL bflag = FALSE;
DWORD dwSize = 0;
// This function determines whether the OS can obtain version information about a
// specified file. If version information is available, GetFileVersionInfoSize
// returns the size, in bytes.
dwSize = GetFileVersionInfoSize(TEXT("wmvcore.dll"),0);
if (dwSize>0)
{
BYTE *pBuf = NULL;
pBuf = new BYTE[dwSize];
if (!pBuf) return FALSE;
if (GetFileVersionInfo(TEXT("wmvcore.dll"), 0, dwSize, pBuf))
{
UINT dwBytes = 0;
VS_FIXEDFILEINFO *pvsInfo = NULL;
if (VerQueryValue(pBuf, TEXT("//"), (void**)&pvsInfo, &dwBytes))
{
INT32 nMajor = 0;
nMajor = HIWORD(pvsInfo->dwProductVersionMS);
INT32 nSub = 0;
nSub = LOWORD(pvsInfo->dwProductVersionMS);
if (nMajor >= 9 && nSub >= 0)
bflag = TRUE;
else
bflag = FALSE;
}
}
if (pBuf != NULL)
{
delete [] pBuf;
pBuf = NULL;
}
}
return bflag;
}