c ++检索可执行文件的图标以在Windows注册表图标路径中使用?

Posted

技术标签:

【中文标题】c ++检索可执行文件的图标以在Windows注册表图标路径中使用?【英文标题】:c++ retrieve executable`s icon for use in windows registry icon path? 【发布时间】:2018-02-17 14:07:32 【问题描述】:

我正在尝试在我的应用程序的 Windows 注册表中设置一个值。 只需添加路径,可执行路径就可以正常工作,但是当我加载它时,在 Windows 程序中看不到该应用程序的图标。 如何从我的应用程序中正确检索图标并将其用作注册表中的图标路径?

我需要在我的应用程序中设置一些东西以便注册表可以看到图标吗?

shell-open-command "C:\myapp\test.exe" "%1" 的密钥注册 但是对于关键 reg 默认图标“”我是否需要在 exe 附近使用常规 .ico 文件,或者我是否也可以从可执行文件的 .exe 文件中获取我在应用程序内部使用的 ico?

我想避免使用 .ico 文件,所以如果可以通过获取可执行文件的文件图标来完成,那就太好了。

torrent 磁力链接是一个很好理解的例子,因为它不是重复的。

检查磁铁->shell->打开->命令

和磁铁->DefaultIcon

在系统注册表中

非常感谢任何帮助

【问题讨论】:

您可以利用ExtractIcon函数检索exe图标句柄。不确定您要达到的目标。图标是 exe 的一部分。可以在编译之前通过项目的资源部分更改图标。一旦生成可执行文件,它就是所有字节数组。请参阅CreateWindow 函数。 Set an exe icon for my program的可能重复 您要设置哪个注册表项?不同的键期望不同格式的图标位置。例如在Uninstall 部分设置可执行路径为DisplayIcon 值将使主应用程序图标显示在已安装应用程序列表中。 我的应用程序图标没问题...它可以在任务栏或托盘或我喜欢的任何东西中看到。我希望能够使用与可执行文件相同的图标,用于系统从路径打开应用程序,例如磁铁洪流链接。当它弹出窗口对话框时,可执行文件的路径和应用程序的名称显示并运行正常,但应用程序的图标根本不显示。 【参考方案1】:

键值应该是完整路径,后跟图标索引。

例如DefaultIcon -> path.exe,-123这里path.exe应该有一个资源ID为123的图标

HKEY_CURRENT_USER\Software\Classes\.txt -> myapp

创建myapp并添加子键DefaultIcon

HKEY_CURRENT_USER\Software\Classes\myapp\DefaultIcon -> path.exe,-123
HKEY_CURRENT_USER\Software\Classes\myapp\shell\open\command -> "path.exe" /open "%1"

【讨论】:

感谢您的回复,我正在测试中。 是的,确实是 Barmak,虽然我花了一些时间,因为我在注册表方面遇到了一些问题,但一切都很好。谢谢

以上是关于c ++检索可执行文件的图标以在Windows注册表图标路径中使用?的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统管理--目录和文件管理

如何检索用于编译给定 ELF 可执行文件的 GCC 版本?

如何在Windows中检索任何给定文件类型的默认图标?

Linux基本命令详解《二》(Linux中对目录和文件管理所使用的命令)

检索COM类工厂中CLSID为{000245000-0000-0000-C000-000000000046的组件时失败,出现错误以下80040154

动态链接