winamp/Src/nu/CCVersion.cpp

45 lines
1.1 KiB
C++
Raw Normal View History

2024-09-24 12:54:57 +00:00
#include "CCVersion.h"
#include <windows.h>
#include <commctrl.h>
#include <shlwapi.h>
DWORD GetCommCtrlDllVersion(LPCTSTR lpszDllName)
{
DWORD dwVersion = 0;
/* In theory, we should limit the search path to only the system folder
at this point, I don't care */
HINSTANCE hinstDll = LoadLibraryW(lpszDllName);
if(hinstDll)
{
DLLGETVERSIONPROC pDllGetVersion;
pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(hinstDll,
"DllGetVersion");
/* Because some DLLs might not implement this function, you
must test for it explicitly. Depending on the particular
DLL, the lack of a DllGetVersion function can be a useful
indicator of the version. */
if(pDllGetVersion)
{
DLLVERSIONINFO dvi;
HRESULT hr;
ZeroMemory(&dvi, sizeof(dvi));
dvi.cbSize = sizeof(dvi);
hr = (*pDllGetVersion)(&dvi);
if(SUCCEEDED(hr))
{
dwVersion = PACKVERSION(dvi.dwMajorVersion, dvi.dwMinorVersion);
}
}
FreeLibrary(hinstDll);
}
return dwVersion;
}