C# WinRT:提取与文件关联的图标?

C# WinRT:提取与文件关联的图标?,c#,windows-runtime,icons,thumbnails,uwp,C#,Windows Runtime,Icons,Thumbnails,Uwp,如何在WinRT应用程序中获取与特定文件(而非缩略图)关联的图像?查看它看起来像是缩略图模式。对于大多数文件类型,音乐可能会为您提供一个图标,但具有关联相册艺术的音乐文件除外,尽管我希望看到一种更强大的方式来获取图标。各种MSDN论坛线程似乎都表明,尽管GetThumbnailAsync()是一条出路。我昨天也找到了这个解决方案。但是使用ThumbnailMode.Music你会得到带有应用背景颜色的图标 最后我发现,使用ThumbnailMode.SingleItem我在没有背景的情况下获得了

如何在WinRT应用程序中获取与特定文件(而非缩略图)关联的图像?

查看它看起来像是
缩略图模式。对于大多数文件类型,音乐
可能会为您提供一个图标,但具有关联相册艺术的音乐文件除外,尽管我希望看到一种更强大的方式来获取图标。各种MSDN论坛线程似乎都表明,尽管
GetThumbnailAsync()
是一条出路。

我昨天也找到了这个解决方案。但是使用
ThumbnailMode.Music
你会得到带有应用背景颜色的图标

最后我发现,使用
ThumbnailMode.SingleItem
我在没有背景的情况下获得了更好的结果。因此,首先创建一个具有正确文件扩展名的空文件,然后尝试获取缩略图:

string filename = "_tmp_ext" + fileextension;
Windows.Storage.StorageFile file = 
  await ApplicationData.Current.TemporaryFolder.CreateFileAsync(
    filename, CreationCollisionOption.OpenIfExists);
FileProperties.StorageItemThumbnail thumb = 
  await file.GetThumbnailAsync(FileProperties.ThumbnailMode.SingleItem, 
    16, FileProperties.ThumbnailOptions.ResizeThumbnail);
if (thumb != null) {
  BitmapImage bitmapImage = new BitmapImage();
  bitmapImage.SetSource(thumb.CloneStream());
  /* ... */
}

没有创建虚拟文件的任何其他解决方案?

您也可以检查此问题的最佳答案。它需要对shell API进行p/invoke,但谁知道呢?也许它能工作?这将只适用于没有应用程序认证的侧面加载应用程序。