mirror of https://github.com/dahall/Vanara.git
WIP on ShellItemSource
parent
ac0a1ac301
commit
ce28b45d48
|
@ -0,0 +1,52 @@
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Vanara.Windows.Shell;
|
||||||
|
using static Vanara.PInvoke.User32;
|
||||||
|
using static Vanara.PInvoke.Shell32;
|
||||||
|
using static Vanara.PInvoke.Shell32.ShellUtil;
|
||||||
|
using System.IO;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
|
namespace Vanara.PInvoke;
|
||||||
|
|
||||||
|
/*internal class ShellImageSource : BitmapSource
|
||||||
|
{
|
||||||
|
public ShellImageSource(string path, System.Drawing.Size imageSize)
|
||||||
|
{
|
||||||
|
SHCreateItemFromParsingName(path, null, typeof(IShellItemImageFactory).GUID, out var ppv).ThrowIfFailed();
|
||||||
|
((IShellItemImageFactory)ppv!).GetImage(imageSize, SIIGBF.SIIGBF_INCACHEONLY, out var hbmp).ThrowIfFailed();
|
||||||
|
|
||||||
|
if (LoadImageFromImageFactory(path, ref imageSize, SIIGBF.SIIGBF_INCACHEONLY, out var hbmp).Succeeded && hbmp != null)
|
||||||
|
if (cache.TryGetValue(path, out var bmp))
|
||||||
|
Bitmap = bmp;
|
||||||
|
bool? isDir = IsDirFile(path);
|
||||||
|
|
||||||
|
|
||||||
|
var hico = ShellImageList.GetFileIcon(path, iconType) ?? ShellImageList.GetSystemIcon(path, iconType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IShellItemImageFactory GetFactory(string path)
|
||||||
|
{
|
||||||
|
SHCreateItemFromParsingName(path, null, typeof(IShellItemImageFactory).GUID, out var ppv).ThrowIfFailed();
|
||||||
|
return (IShellItemImageFactory)ppv!;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IShellItemImageFactory GetFactory(PIDL pidl)
|
||||||
|
{
|
||||||
|
SHCreateItemFromIDList(pidl, typeof(IShellItemImageFactory).GUID, out var ppv).ThrowIfFailed();
|
||||||
|
return (IShellItemImageFactory)ppv!;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async Task<Bitmap> GetImageAsync(IShellItemImageFactory siif, System.Drawing.Size imageSize)
|
||||||
|
{
|
||||||
|
siif.GetImage(imageSize, SIIGBF.SIIGBF_INCACHEONLY, out var hbmp).ThrowIfFailed();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Freezable CreateInstanceCore() => throw new NotImplementedException();
|
||||||
|
}*/
|
|
@ -23,6 +23,7 @@ SystemFoundationExtensions
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\PInvoke\Gdi32\Vanara.PInvoke.Gdi32.csproj" />
|
<ProjectReference Include="..\PInvoke\Gdi32\Vanara.PInvoke.Gdi32.csproj" />
|
||||||
<ProjectReference Include="..\PInvoke\User32\Vanara.PInvoke.User32.csproj" />
|
<ProjectReference Include="..\PInvoke\User32\Vanara.PInvoke.User32.csproj" />
|
||||||
|
<ProjectReference Include="..\Windows.Shell.Common\Vanara.Windows.Shell.Common.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="System.Runtime.WindowsRuntime" Version="4.7.0" />
|
<PackageReference Include="System.Runtime.WindowsRuntime" Version="4.7.0" />
|
||||||
|
|
Loading…
Reference in New Issue