从 UWP 应用程序中提取图标

2023-12-15

在尝试实现“打开方式”功能时,我遇到了从 UWP 应用程序提取图标的问题。因此,在收到推荐的应用程序列表后,借助以下命令打开特定文件SHAssocEnumHandlers,我试图在以下命令的帮助下提取每个应用程序的图标IAssocHandler::GetIconLocation和古典的ExtractIcon()。例如,使用 Paint 等程序一切正常。我有 Paint 二进制文件的完整路径,可以从中提取图标。但对于“3D builder”、“照片”等应用程序和其他 UWP 应用程序获得的图标位置看起来像@{Microsoft.Windows.Photos_16.511.8630.0_x64__8wekyb3d8bbwe?ms-resource://Microsoft.Windows.Photos/Files/Assets/PhotosAppList.png}。我尝试了几个不同的 API 来提取图标,每次都会收到 FILE_NOT_FOUND 错误。那么,有人能给我提示在这种情况下可以使用哪个函数来提取图标吗?

UPDATE添加了源代码的某些部分以澄清情况:

// m_handlers is a member of type std::vector<CComPtr<IAssocHandler>>

HRESULT FileManager::GetAssocHandlers(const std::wstring& strFileExtension, ASSOC_FILTER filter)
{
    HRESULT hr = S_OK;
    CComPtr<IEnumAssocHandlers> enumerator;

    m_handlers.clear();

    hr = SHAssocEnumHandlers(strFileExtension.c_str(), filter, &enumerator);
    if (SUCCEEDED(hr))
    {
        for (CComPtr<IAssocHandler> handler;
            enumerator->Next(1, &handler, nullptr) == S_OK;
            handler.Release())
        {
            m_handlers.push_back(handler);
        }
    }

    return hr;
}

HRESULT FileManager::GetAssociatedPrograms(BSTR bstrFileName, BSTR* bstrRet)
{
    ...
    hr = GetAssocHandlers(strFileExtension, ASSOC_FILTER_RECOMMENDED);
    if (SUCCEEDED(hr))
    {
        ...
        for (auto& handler : m_handlers)
        {
            ...
            if (SUCCEEDED(handler->GetIconLocation(&tmpStr, &resourceIndex)))
            {
                // And this is where I get classic full file path to regular
                // applications like "MS Paint" or this weird path mentioned
                // above for "Photos" UWP application for example which can't
                // be used in regular ExtractIcon functions.
            }
        }
    }
}

看来我已经找到了解决方案。为UWP应用程序提供的图标位置路径根据MSDN称为“间接字符串”。我们可以将这个间接字符串传递给SH加载间接字符串函数并将收到图标 PNG 文件的常规完整路径。就我而言,通过后@{Microsoft.Windows.Photos_16.511.8630.0_x64__8wekyb3d8bbwe?ms-resource://Microsoft.Windows.Photos/Files/Assets/PhotosAppList.png}到 SHLoadIndirectString() 我收到了这样的路径:C:\Program Files\WindowsApps\Microsoft.Windows.Photos_16.511.8630.0_neutral_split.scale-125_8wekyb3d8bbwe\Assets\PhotosAppList.scale-125.png之后我可以使用它来显示图标本身,没有任何问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 UWP 应用程序中提取图标 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 错误 openerp.addons.website.models.ir_http: 500 内部服务器错误: 从 odoo 注销后

    我在 Ubuntu 14 04 中使用 odoo v9 社区安装 所有工作完成后完美完成 但是当我安装 odoo 的网站模块并从 odoo 注销后 它显示以下错误 500内部服务器错误 和我的日志 Traceback most recent
  • 通用类 (T) - 从一系列类型中指定 VB.Net

    这是我正在尝试开发的代码 Public Structure Statistic Of t Dim maxStat As t Dim curStat As t Public Sub New ByVal pValue As t maxStat
  • 为什么 Gremlin JavaScript 使用“from_”映射而不是“from”?

    在发现你必须使用之前我为此苦苦挣扎了几个小时from 代替from使用 gremlin javascript 时 在深入研究源代码后 我终于发现代码正在使用from 代替from see code 因为我是新手 所以这很奇怪 因为它的对应部
  • 如何将 gif 保存到我的相册中?

    我尝试使用 UIImageWriteToSavedPhotosAlbum 和 ALAssetsLibrary 将我的 gif 保存到相册 但是当我尝试通过电子邮件发送 gif 时 它没有动画 我很确定元数据在保存时会丢失 有谁知道如何保存
  • 如何在 R 中使用 ggplot2 制作类似的图?

    对于以下数据集 我想为每个变量绘制图表 并对每个 10 个观察值进行不同的颜色 我可以使用 R 库来做到这一点 我想学习如何使用 ggplot2 来做到这一点 dput mydata structure list beta0 C1 c 5
  • 使用 make 文件创建目录

    我想使用 makefile 创建目录 我的项目目录是这样的 Project output source Testfile cpp Makefile 我想将所有对象和输出放入相应的输出文件夹中 我想创建编译后像这样的文件夹结构 Project
  • 在 Knit 中调整观星台的大小

    我使用 knit 整理了一份文档 虽然该文档的大部分看起来都不错 但有一个回归表太宽 如果不进行一些更改 就无法容纳在页面上 回归表是使用 stargazer 生成的 并且相当广泛 我尝试按如下方式调整整个块的大小 r echo FALSE
  • 无法连接到 Localdb,但可以使用命名管道

    我真的很讨厌将我的应用程序连接到数据库 我正在尝试使用连接到数据库 localdb MSSQLLocalDB在连接字符串中 我收到此错误 A network related or instance specific error occurr
  • web-api POST body 对象始终为 null

    我仍在学习 Web API 所以如果我的问题听起来很愚蠢 请原谅我 我的里面有这个StudentController public HttpResponseMessage PostStudent FromBody Models Studen
  • 使用 VBA 创建 Outlook 事件(不是约会!)

    所以有一个线程所以链接在这里它链接了如何创建 Outlook 事件 但实际上它创建的是约会 而不是事件 差异可以阅读HERE 我的问题很简单 如何使用 VBA 创建实际事件而不是约会 谢谢 约会和事件之间的区别是事件持续 24 小时或更长时
  • Zend 表单引导注释日期选择器“提供给转义助手的对象,但标志不允许递归”

    我正在使用带有 Bootstrap 和 ReverseForm 适配器的 Zend 框架 并且有一个有趣的问题 当我在 Zend Form 中使用 Bootstrap Datepicker 时 出现下一个异常 Object provided
  • 将位图转换为 ninepatch 以用作背景

    我有一个问题困扰了我好几天了 我正在尝试将九个补丁图像转换为位图数组 并将特定颜色更改为不同的颜色 我无法将位图转换回九个补丁 因此我可以将其用作布局的背景 我尝试使用此代码创建位图 然后将其转换回九个补丁可绘制对象 但它只是启动活动并闪烁
  • asp 服务器错误“无法加载文件或程序集”,但程序集肯定存在。

    我目前收到以下错误 在 locahost 网站上 Could not load file or assembly MySql Data Version 6 5 4 0 Culture neutral PublicKeyToken c5687
  • android中Videoview的身份验证

    我正在使用一个视频观看播放http视频 Http视频url需要验证 所以请让我知道如何为 VideoView 设置身份验证 如果没有 是否还有其他替代方法来查看经过身份验证的视频 感谢和问候 斯里 哈沙 VideoView 中有一个隐藏方法
  • 如何设置 ASP.NET 身份验证属性

    我的 web config 文件中有以下设置 如果用户未登录 它基本上会限制对页面的访问 如果我不想使用 asp 登录控件或实现会员资格提供程序 我如何 告诉 asp loginregister aspx 页面已授权该请求如果我想实现自己的
  • Android 片段中的手电筒 - SurfaceView

    我正在尝试为当地音乐会开发手电筒应用程序 这是一个更大的应用程序的一部分 因此它位于一个片段中 这是代码 首先 我声明了该类及其变量 public class ConcertFragment extends Fragment ToggleB
  • 在 VBA 中解析 XML

    我有一个 XMLResponseXML目的 我想循环遍历所有名为 XYZ 的节点 我该怎么做呢 以下是您可以使用的一些功能parsing your XML Private xml As MSXML DOMDocument Private S
  • 读入R中路径中包含UTF-8字符的文件

    假设我有大量 rds 文件 其中一些文件的路径中包含 UTF 8 字符 由于某种原因 R 无法处理一些特殊的重音 例如enc2utf8 它应该打印 但在我最后它转换为 C 这使得 R 无法识别该文件 有什么想法如何处理这种情况 帮助 R 进
  • 从c中的另一个文件链接静态函数

    我有两个源文件 A c 和 B c A c 有一个函数 call me static int call me void call me register register call me call me 正如你所看到的 call me函数被
  • 从 UWP 应用程序中提取图标

    在尝试实现 打开方式 功能时 我遇到了从 UWP 应用程序提取图标的问题 因此 在收到推荐的应用程序列表后 借助以下命令打开特定文件SHAssocEnumHandlers 我试图在以下命令的帮助下提取每个应用程序的图标IAssocHandl