Nikolay Sivov : shlwapi: Use public definitions for WhichPlatform().
Alexandre Julliard
julliard at winehq.org
Mon Feb 3 15:06:05 CST 2020
Module: wine
Branch: master
Commit: 017c953d868b7313a16e465851fc3f46f62cd77d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=017c953d868b7313a16e465851fc3f46f62cd77d
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Feb 3 10:16:08 2020 +0300
shlwapi: Use public definitions for WhichPlatform().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/shlwapi/ordinal.c | 66 ---------------------------------------------
dlls/shlwapi/shlwapi_main.c | 48 +++++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 66 deletions(-)
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
index c5c4fa14ad..dd39366c80 100644
--- a/dlls/shlwapi/ordinal.c
+++ b/dlls/shlwapi/ordinal.c
@@ -2291,72 +2291,6 @@ BOOL WINAPI GUIDFromStringW(LPCWSTR idstr, CLSID *id)
return SUCCEEDED(CLSIDFromString((LPCOLESTR)idstr, id));
}
-/*************************************************************************
- * @ [SHLWAPI.276]
- *
- * Determine if the browser is integrated into the shell, and set a registry
- * key accordingly.
- *
- * PARAMS
- * None.
- *
- * RETURNS
- * 1, If the browser is not integrated.
- * 2, If the browser is integrated.
- *
- * NOTES
- * The key "HKLM\Software\Microsoft\Internet Explorer\IntegratedBrowser" is
- * either set to TRUE, or removed depending on whether the browser is deemed
- * to be integrated.
- */
-DWORD WINAPI WhichPlatform(void)
-{
- static const char szIntegratedBrowser[] = "IntegratedBrowser";
- static DWORD dwState = 0;
- HKEY hKey;
- DWORD dwRet, dwData, dwSize;
- HMODULE hshell32;
-
- if (dwState)
- return dwState;
-
- /* If shell32 exports DllGetVersion(), the browser is integrated */
- dwState = 1;
- hshell32 = LoadLibraryA("shell32.dll");
- if (hshell32)
- {
- FARPROC pDllGetVersion;
- pDllGetVersion = GetProcAddress(hshell32, "DllGetVersion");
- dwState = pDllGetVersion ? 2 : 1;
- FreeLibrary(hshell32);
- }
-
- /* Set or delete the key accordingly */
- dwRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
- "Software\\Microsoft\\Internet Explorer", 0,
- KEY_ALL_ACCESS, &hKey);
- if (!dwRet)
- {
- dwRet = RegQueryValueExA(hKey, szIntegratedBrowser, 0, 0,
- (LPBYTE)&dwData, &dwSize);
-
- if (!dwRet && dwState == 1)
- {
- /* Value exists but browser is not integrated */
- RegDeleteValueA(hKey, szIntegratedBrowser);
- }
- else if (dwRet && dwState == 2)
- {
- /* Browser is integrated but value does not exist */
- dwData = TRUE;
- RegSetValueExA(hKey, szIntegratedBrowser, 0, REG_DWORD,
- (LPBYTE)&dwData, sizeof(dwData));
- }
- RegCloseKey(hKey);
- }
- return dwState;
-}
-
/*************************************************************************
* @ [SHLWAPI.278]
*
diff --git a/dlls/shlwapi/shlwapi_main.c b/dlls/shlwapi/shlwapi_main.c
index fc1b6d6137..af79c33cb6 100644
--- a/dlls/shlwapi/shlwapi_main.c
+++ b/dlls/shlwapi/shlwapi_main.c
@@ -108,3 +108,51 @@ HRESULT WINAPI DllGetVersion (DLLVERSIONINFO *pdvi)
WARN("pdvi->cbSize = %d, unhandled\n", pdvi2->info1.cbSize);
return E_INVALIDARG;
}
+
+/*************************************************************************
+ * WhichPlatform() [SHLWAPI.276]
+ */
+UINT WINAPI WhichPlatform(void)
+{
+ static const char szIntegratedBrowser[] = "IntegratedBrowser";
+ static DWORD state = PLATFORM_UNKNOWN;
+ DWORD ret, data, size;
+ HMODULE hshell32;
+ HKEY hKey;
+
+ if (state)
+ return state;
+
+ /* If shell32 exports DllGetVersion(), the browser is integrated */
+ state = PLATFORM_BROWSERONLY;
+ hshell32 = LoadLibraryA("shell32.dll");
+ if (hshell32)
+ {
+ FARPROC pDllGetVersion;
+ pDllGetVersion = GetProcAddress(hshell32, "DllGetVersion");
+ state = pDllGetVersion ? PLATFORM_INTEGRATED : PLATFORM_BROWSERONLY;
+ FreeLibrary(hshell32);
+ }
+
+ /* Set or delete the key accordingly */
+ ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Internet Explorer", 0, KEY_ALL_ACCESS, &hKey);
+ if (!ret)
+ {
+ size = sizeof(data);
+ ret = RegQueryValueExA(hKey, szIntegratedBrowser, 0, 0, (BYTE *)&data, &size);
+ if (!ret && state == PLATFORM_BROWSERONLY)
+ {
+ /* Value exists but browser is not integrated */
+ RegDeleteValueA(hKey, szIntegratedBrowser);
+ }
+ else if (ret && state == PLATFORM_INTEGRATED)
+ {
+ /* Browser is integrated but value does not exist */
+ data = TRUE;
+ RegSetValueExA(hKey, szIntegratedBrowser, 0, REG_DWORD, (BYTE *)&data, sizeof(data));
+ }
+ RegCloseKey(hKey);
+ }
+
+ return state;
+}
More information about the wine-cvs
mailing list