vc下如何设置pe文件图标为系统文件夹图标?不是设置,是不带ico的,直接获取的.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc下如何设置pe文件图标为系统文件夹图标?不是设置,是不带ico的,直接获取的.相关的知识,希望对你有一定的参考价值。
参考技术A %SystemRoot%\System32\shell32.dll,3上面就是文件夹图标的使用地址。你可以直接程序编辑注册表设置PE文件的default icon,也可以使用shell注册icon。追问
大哥,能详细点么,我实在是不懂。。。给段代码谢谢啦。
追答你描述实在太简单了,这样没法给你代码,不同代码适用不同的工程模式,我怎么知道你适合使用哪种代码呢。。。
注册表模式代码示例:
if( ERROR_SUCCESS == ::RegCreateKeyEx(hOpenKey, szKey, dwReserved,
(LPTSTR)0, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, 0,
&hTempKey, &dwDisposition) )
// dwBufferLength must include size of terminating nul
// character when using REG_SZ with RegSetValueEx function
dwBufferLength += sizeof(TCHAR);
if( ERROR_SUCCESS == ::RegSetValueEx(hTempKey, (LPTSTR)szValue,
dwReserved, REG_SZ, (LPBYTE)szData, dwBufferLength) )
bRetVal = TRUE;
// close opened key
if( hTempKey )
::RegCloseKey(hTempKey);
MFC下不需要直接操作注册表,只需要EnableShellOpen和RegisterShellFileTypes即可
如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?
【中文标题】如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?【英文标题】:How to set icon(or .ico file) on executable file in linux system? 【发布时间】:2021-02-08 10:09:24 【问题描述】:我一直在尝试在 linux 和 macOS 中的 executable file(.exe) 上设置图标。
我了解到有 3 个位置图标集:任务栏、窗口栏和可执行文件缩略图。 我已经在任务栏和窗口栏上设置了,但不在 exe 文件上。 (顺便说一句,我已经使用 Visual Studio 在 Windows 中完成了其中的 3 个。)
我可能不知道它的确切术语,所以我将展示下面的示例: enter image description here
我猜.rc 文件应该在makefile 中。 如果是这样,我也可以在 macOS 中解决它。 如果没有,我也想知道如何在 linux 和 macOS 中进行设置。 请让我知道如何使用它并设置它。提前致谢。
附言我使用 GLFWimage 在窗口栏和任务栏上设置图标并使用 openGL3 和 c++。
glfwSetWindowIcon(window, 1, &icon);
【问题讨论】:
【参考方案1】:我猜 .rc 文件应该在 makefile 中。
虽然在 Windows .exe
文件中存储图标有一种“标准化”方式,但对于“ELF”文件(Linux 下最常见的可执行文件格式)则没有这种方式。
在任务栏和窗口栏上
窗口管理器使用的图标(例如用于任务栏)通常存储为“X11 窗口属性”。 “X11 窗口属性”是程序分配给窗口的一些数据。
程序必须将图标图像作为数组提供并调用函数XChangeProperty()
(这是函数glfwSetWindowIcon()
间接执行的操作)。
图标没有必要以特殊方式存储(类似于Windows中的.rc
文件);程序可以简单地将图标存储在一些const
数组中,甚至可以在调用XChangeProperty()
之前计算图标图像数据。
...但不在 exe 文件上。
正如我已经写过的,没有“标准化”的方式将图标存储在 Linux 的可执行文件中。
一些文件管理器“知道”某些程序并显示相应的图标:他们知道“xterm”是一个终端程序,所以他们显示终端图标。但是,这个图标并不存储在可执行文件中,而是存储在文件管理器中:如果您将任何可执行文件重命名为“xterm”,则会显示终端图标。
有一个名为“elfres”的扩展(它在几年前被命名为“elficon”)允许将图标添加到 ELF 可执行文件。 The web site of that extension is found here. 在链接的网站上,您还可以找到 a screen shot with an example - 这样您就可以检查我是否理解正确,这就是您所说的。
很遗憾,这是一个非标准扩展。因此,“标准”Linux 安装不会检查可执行文件是否包含图标,因此不会显示图标。
如果使用“elfres”方式,必须安装专门的插件;否则不显示可执行文件的图标。
【讨论】:
以上是关于vc下如何设置pe文件图标为系统文件夹图标?不是设置,是不带ico的,直接获取的.的主要内容,如果未能解决你的问题,请参考以下文章