Date: 2010feb4
OS: Windows
Language: C/C++
Q. How can I get the version of COMCTL32.DLL or other Windows DLL?
A. Many Windows' DLLs export a function called DllGetVersion.
You can call this function to find the DLL's version. If the function
doesn't not exist you can assume the DLL is pre-Windows 2000.
Here's some code to do it:
typedef struct _DllVersionInfo {
DWORD cbSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformID;
} DLLVERSIONINFO;
typedef HRESULT (CALLBACK *fDllGetVersion)(DLLVERSIONINFO *);
BOOL GetWindowsDllVersion(LPCSTR szDll, float &version)
{
HMODULE hModule;
fDllGetVersion pDllGetVersion;
DLLVERSIONINFO info;
char buf[100];
version = 0.0;
if ((hModule = LoadLibrary(szDll)) == NULL) return FALSE;
if ((pDllGetVersion = (fDllGetVersion) GetProcAddress(hModule, "DllGetVersion")) == NULL) return FALSE;
ZeroMemory(&info, sizeof(info));
info.cbSize = sizeof(info);
if (pDllGetVersion(&info) != S_OK) return FALSE;
_snprintf(buf, sizeof(buf), "%d.%d", info.dwMajorVersion, info.dwMinorVersion);
sscanf(buf, "%f", &version);
return TRUE;
}
void ExampleUse()
{
float version;
if (!GetWindowsDllVersion("COMCTL32.DLL", version))
{
version = 4.0;
}
if (version >= 4.7)
{
// OK to use that feature in version 4.7 of the Common Controls
}
}
| What this info useful to you? You can donate to say thanks |
Add a comment
Sign in to add a comment