From 932e8165c961b81d5ac94b309655956479af27e3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sat, 17 Jul 2004 00:05:23 +0000 Subject: [PATCH] Implemented GetUIVersion (based on a patch by Stefan Leichter). --- dlls/shlwapi/ordinal.c | 28 ++++++++++++++++++++++++++++ dlls/shlwapi/shlwapi.spec | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c index 1bbece49ae2..10bb801bf4b 100644 --- a/dlls/shlwapi/ordinal.c +++ b/dlls/shlwapi/ordinal.c @@ -3955,3 +3955,31 @@ HRESULT WINAPI SKGetValueW(DWORD a, LPWSTR b, LPWSTR c, DWORD d, DWORD e, DWORD FIXME("(%lx, %s, %s, %lx, %lx, %lx): stub\n", a, debugstr_w(b), debugstr_w(c), d, e, f); return E_FAIL; } + +typedef HRESULT (WINAPI *DllGetVersion_func)(DLLVERSIONINFO *); + +/*********************************************************************** + * GetUIVersion (SHLWAPI.452) + */ +DWORD WINAPI GetUIVersion(void) +{ + static DWORD version; + + if (!version) + { + DllGetVersion_func pDllGetVersion; + HMODULE dll = LoadLibraryA("shell32.dll"); + if (!dll) return 0; + + pDllGetVersion = (DllGetVersion_func)GetProcAddress(dll, "DllGetVersion"); + if (pDllGetVersion) + { + DLLVERSIONINFO dvi; + dvi.cbSize = sizeof(DLLVERSIONINFO); + if (pDllGetVersion(&dvi) == S_OK) version = dvi.dwMajorVersion; + } + FreeLibrary( dll ); + if (!version) version = 3; /* old shell dlls don't have DllGetVersion */ + } + return version; +} diff --git a/dlls/shlwapi/shlwapi.spec b/dlls/shlwapi/shlwapi.spec index 75434e5ddb5..380fc3125db 100644 --- a/dlls/shlwapi/shlwapi.spec +++ b/dlls/shlwapi/shlwapi.spec @@ -535,7 +535,7 @@ 539 stub -noname IUnknown_ShowBrowserBar 540 stub -noname SHInvokeCommandOnContextMenu 541 stub -noname SHInvokeCommandsOnContextMen -542 stub -noname GetUIVersion +542 stdcall -noname GetUIVersion() 543 stub -noname CreateColorSpaceWrapW 544 stub -noname QuerySourceCreateFromKey 545 stub -noname SHForwardContextMenuMsg -- 2.11.4.GIT