123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #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;
- }
|