Skip to content

Commit a13a1cd

Browse files
committed
Add minifest, Fix issues with windows 10 & 11 compatibility
1 parent 57c1d29 commit a13a1cd

5 files changed

Lines changed: 73 additions & 23 deletions

File tree

PsdThumbnailProvider/GetThumbnail.cpp

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -248,29 +248,36 @@ HBITMAP GetPSDThumbnail(IStream* stream) {
248248
thumbWidth = width * thumbHeight / height;
249249
}
250250

251-
BLENDFUNCTION fnc;
252-
fnc.BlendOp = AC_SRC_OVER;
253-
fnc.BlendFlags = 0;
254-
fnc.SourceConstantAlpha = 0xFF;
255-
fnc.AlphaFormat = AC_SRC_ALPHA;
256-
257-
HDC dc = GetDC(NULL);
258-
HDC srcDC = CreateCompatibleDC(dc);
259-
HDC memDC = CreateCompatibleDC(dc);
260-
result = CreateCompatibleBitmap(dc, thumbWidth, thumbHeight);
261-
SelectObject(memDC, result);
262-
SelectObject(srcDC, fullBitmap);
263-
264-
RECT rect = {};
265-
rect.right = thumbWidth;
266-
rect.bottom = thumbHeight;
267-
FillRect(memDC, &rect, (HBRUSH)GetStockObject(NULL_BRUSH));
268-
AlphaBlend(memDC, 0, 0, thumbWidth, thumbHeight, srcDC, 0, 0, width, height, fnc);
251+
BITMAPINFO bmi = {};
252+
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
253+
bmi.bmiHeader.biWidth = thumbWidth;
254+
bmi.bmiHeader.biHeight = -thumbHeight;
255+
bmi.bmiHeader.biPlanes = 1;
256+
bmi.bmiHeader.biBitCount = 32;
257+
bmi.bmiHeader.biCompression = BI_RGB;
258+
259+
void* pBits = nullptr;
260+
result = CreateDIBSection(NULL, &bmi, DIB_RGB_COLORS, &pBits, NULL, 0);
261+
262+
if (result) {
263+
HDC srcDC = CreateCompatibleDC(NULL);
264+
HDC memDC = CreateCompatibleDC(NULL);
265+
SelectObject(memDC, result);
266+
SelectObject(srcDC, fullBitmap);
267+
268+
BLENDFUNCTION fnc;
269+
fnc.BlendOp = AC_SRC_OVER;
270+
fnc.BlendFlags = 0;
271+
fnc.SourceConstantAlpha = 0xFF;
272+
fnc.AlphaFormat = AC_SRC_ALPHA;
273+
274+
AlphaBlend(memDC, 0, 0, thumbWidth, thumbHeight, srcDC, 0, 0, width, height, fnc);
275+
276+
DeleteDC(srcDC);
277+
DeleteDC(memDC);
278+
}
269279

270280
DeleteObject(fullBitmap);
271-
DeleteDC(srcDC);
272-
DeleteDC(memDC);
273-
ReleaseDC(NULL, dc);
274281
} else {
275282
result = CreateBitmap(width, height, 1, 32, data);
276283
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
3+
<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="PsdThumbnailProvider" type="win32" />
4+
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
5+
<application>
6+
<!-- Windows 10 and Windows 11 -->
7+
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
8+
<!-- Windows 8.1 -->
9+
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
10+
<!-- Windows 8 -->
11+
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
12+
<!-- Windows 7 -->
13+
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
14+
</application>
15+
</compatibility>
16+
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
17+
<security>
18+
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
19+
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
20+
</requestedPrivileges>
21+
</security>
22+
</trustInfo>
23+
</assembly>

PsdThumbnailProvider/PsdThumbnailProvider.vcxproj

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@
8282
<OutDir>$(Platform)\$(Configuration)\</OutDir>
8383
</PropertyGroup>
8484
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
85+
<Manifest>
86+
<AdditionalManifestFiles>PsdThumbnailProvider.manifest</AdditionalManifestFiles>
87+
<EmbedManifest>true</EmbedManifest>
88+
</Manifest>
8589
<ClCompile>
8690
<PrecompiledHeader>
8791
</PrecompiledHeader>
@@ -96,6 +100,10 @@
96100
</Link>
97101
</ItemDefinitionGroup>
98102
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
103+
<Manifest>
104+
<AdditionalManifestFiles>PsdThumbnailProvider.manifest</AdditionalManifestFiles>
105+
<EmbedManifest>true</EmbedManifest>
106+
</Manifest>
99107
<ClCompile>
100108
<PrecompiledHeader>
101109
</PrecompiledHeader>
@@ -111,6 +119,10 @@
111119
</Link>
112120
</ItemDefinitionGroup>
113121
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
122+
<Manifest>
123+
<AdditionalManifestFiles>PsdThumbnailProvider.manifest</AdditionalManifestFiles>
124+
<EmbedManifest>true</EmbedManifest>
125+
</Manifest>
114126
<ClCompile>
115127
<WarningLevel>Level3</WarningLevel>
116128
<PrecompiledHeader>
@@ -129,6 +141,10 @@
129141
</Link>
130142
</ItemDefinitionGroup>
131143
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
144+
<Manifest>
145+
<AdditionalManifestFiles>PsdThumbnailProvider.manifest</AdditionalManifestFiles>
146+
<EmbedManifest>true</EmbedManifest>
147+
</Manifest>
132148
<ClCompile>
133149
<WarningLevel>Level3</WarningLevel>
134150
<PrecompiledHeader>
@@ -151,6 +167,7 @@
151167
<ItemGroup>
152168
<None Include=".\PsdThumbnailProvider.h" />
153169
<None Include="GlobalExportFunctions.def" />
170+
<None Include="PsdThumbnailProvider.manifest" />
154171
</ItemGroup>
155172
<ItemGroup>
156173
<ClInclude Include="ClassFactory.h" />

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ PSD thumbnail provider for Windows Explorer
66

77
## Supported systems
88

9-
* **Windows Vista/7/8/10 x64**
9+
* **Windows Vista/7/8/10/11 x64**
1010

1111
## Building
1212

Setup/Product.wxs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
3-
<Product Id="*" Name="PSD Thumbnail Provider" Language="1033" Version="1.6.1.0" Manufacturer="Agamnentzar" UpgradeCode="cb88ff56-355c-48fd-8343-8d3f40ef02ce">
3+
<Product Id="*" Name="PSD Thumbnail Provider" Language="1033" Version="1.7.0.0" Manufacturer="Agamnentzar" UpgradeCode="cb88ff56-355c-48fd-8343-8d3f40ef02ce">
44
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
55
<Condition Message="You need to be an administrator to install this product.">Privileged</Condition>
66
<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A newer version of PSD Thumbnail Provider is already installed." />
@@ -34,6 +34,9 @@
3434
<RegistryKey Root="HKCR" Key=".psb\shellex\{e357fccd-a995-4576-b01f-234630154e96}" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
3535
<RegistryValue Type="string" Value="{5BB45D32-AF01-414F-B60A-5E999B986681}" />
3636
</RegistryKey>
37+
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved">
38+
<RegistryValue Type="string" Name="{5BB45D32-AF01-414F-B60A-5E999B986681}" Value="PSD Thumbnail Provider" />
39+
</RegistryKey>
3740
</Component>
3841
</DirectoryRef>
3942

0 commit comments

Comments
 (0)