Skip to content

Commit a8b43c9

Browse files
committed
Add Drop-Shadows to thumbnails
1 parent 3e7da43 commit a8b43c9

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

SarThumbnailHandler/dllmain.cpp

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,21 @@ STDAPI DllCanUnloadNow(void)
6363

6464
struct REGISTRY_ENTRY
6565
{
66-
HKEY hkeyRoot;
67-
PCWSTR pszKeyName;
68-
PCWSTR pszValueName;
69-
PCWSTR pszData;
66+
HKEY keyRoot;
67+
LPCWSTR keyName;
68+
LPCWSTR valueName;
69+
DWORD dataType;
70+
DWORD dataSize;
71+
LPCVOID dataPtr;
7072
};
7173

72-
HRESULT CreateRegKeyAndSetValue(const REGISTRY_ENTRY* pRegistryEntry)
74+
HRESULT CreateRegKeyAndSetValue(const REGISTRY_ENTRY* pEntry)
7375
{
7476
HKEY hKey;
75-
HRESULT hr = HRESULT_FROM_WIN32(RegCreateKeyExW(pRegistryEntry->hkeyRoot, pRegistryEntry->pszKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL));
77+
HRESULT hr = HRESULT_FROM_WIN32(RegCreateKeyExW(pEntry->keyRoot, pEntry->keyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL));
7678
if (SUCCEEDED(hr))
7779
{
78-
hr = HRESULT_FROM_WIN32(RegSetValueExW(hKey, pRegistryEntry->pszValueName, 0, REG_SZ, (LPBYTE)pRegistryEntry->pszData, ((DWORD)wcslen(pRegistryEntry->pszData) + 1) * sizeof(WCHAR)));
80+
hr = HRESULT_FROM_WIN32(RegSetValueExW(hKey, pEntry->valueName, 0, pEntry->dataType, (LPBYTE)pEntry->dataPtr, pEntry->dataSize));
7981
RegCloseKey(hKey);
8082
}
8183
return hr;
@@ -93,13 +95,17 @@ STDAPI DllRegisterServer(void)
9395
}
9496
else
9597
{
98+
DWORD dwTreatment = 1; // Picture
99+
DWORD dwModuleNameLen = wcslen(szModuleName) * sizeof(WCHAR);
96100
const REGISTRY_ENTRY rgRegistryEntries[] =
97101
{
98-
// RootKey KeyName ValueName Data
99-
{HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler, NULL, HANDLER_DESCRIPTION},
100-
{HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler L"\\InProcServer32", NULL, szModuleName},
101-
{HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler L"\\InProcServer32", L"ThreadingModel", L"Apartment"},
102-
{HKEY_CURRENT_USER, L"Software\\Classes\\" SZ_FORMAT_EXTENSION "\\ShellEx\\{e357fccd-a995-4576-b01f-234630154e96}", NULL, SZ_CLSID_ShellExtendionHandler},
102+
// RootKey KeyName ValueName Type Size, Data
103+
{HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler, NULL, REG_SZ, sizeof(HANDLER_DESCRIPTION), HANDLER_DESCRIPTION},
104+
{HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler L"\\InProcServer32", NULL, REG_SZ, dwModuleNameLen, szModuleName},
105+
{HKEY_CURRENT_USER, L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler L"\\InProcServer32", L"ThreadingModel", REG_SZ, sizeof(L"Apartment"), L"Apartment"},
106+
107+
{HKEY_CURRENT_USER, L"Software\\Classes\\" SZ_FORMAT_EXTENSION, L"Treatment", REG_DWORD, sizeof(DWORD), &dwTreatment},
108+
{HKEY_CURRENT_USER, L"Software\\Classes\\" SZ_FORMAT_EXTENSION "\\ShellEx\\{e357fccd-a995-4576-b01f-234630154e96}", NULL, REG_SZ, sizeof(SZ_CLSID_ShellExtendionHandler), SZ_CLSID_ShellExtendionHandler},
103109
};
104110

105111
hr = S_OK;
@@ -122,7 +128,7 @@ STDAPI DllUnregisterServer(void)
122128
const PCWSTR rgpszKeys[] =
123129
{
124130
L"Software\\Classes\\CLSID\\" SZ_CLSID_ShellExtendionHandler,
125-
L"Software\\Classes\\" SZ_FORMAT_EXTENSION "\\ShellEx\\{e357fccd-a995-4576-b01f-234630154e96}"
131+
L"Software\\Classes\\" SZ_FORMAT_EXTENSION "\\ShellEx\\{e357fccd-a995-4576-b01f-234630154e96}",
126132
};
127133

128134
for (int i = 0; i < ARRAYSIZE(rgpszKeys) && SUCCEEDED(hr); i++)

0 commit comments

Comments
 (0)