c语言修改文件图标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言修改文件图标相关的知识,希望对你有一定的参考价值。

1、如何用c语言获得一个指定路径文件的图标
2、如何修改一个文件图标?
话说应该是c++也无所谓的

同一类文件(后缀名相同,比如 .txt) 的图标,都是一样的!这个图标,默认就是打开这个文件的应用程序的图标。比如 a.txt 的图标,如果 txt 文件默认用记事本打开(notepad.exe) ,那么 a.txt 的图标就是 notepad.exe 的图标。

当然,你也可以修改txt 类型文件的图标(但是可以仍然用 notepad.exe 打开)。txt 类型文件的图标,其实是保存在注册表里面的。具体位置是:
HKEY_CLASSES_ROOT -> .txt ,找到 txt 类型在注册表里面的类型名,一般为txtfile;
HKEY_CLASSES_ROOT -> txtfile -> DefaultIcon , 这个就是 txt 类型文件的图标了。追问

是这样的,我是想通过用c++写一个程序,通过这个程序来修改其他指定文件的图标(以exe文件为例),而不是把所有的exe文件都修改,能否实现?
另外,刚才听你这么一说,对刚才的东西也挺感兴趣的,是不是用刚才的方法可以将所有的TXT文件的图标修改为另外一个?如果可以的话,可否代码实现下?可以的话,追加50分

追答

问题1:修改指定 exe 文件的图标。
还是从注册表入手:

HKEY_CLASSES_ROOT -> .exe ,找到 exe 类型在注册表里面的类型名,一般为 exefile;
HKEY_CLASSES_ROOT -> exefile-> DefaultIcon , 这个目录下有个默认项,值为 “%1”。
也就是说,每个 exe 文件的图标,是【 该 exe 文件本身】里面的包含的第一图标。

顺便说一句,一个 exe 文件里,其实有很多东西的,包括图标,字符串,版本信息等,是经过编译后才以一个文件的形式存在的。

这样问题的答案就清楚了。要修改指定 exe 文件的图标,必须修改 exe 文件本身。具体的说,要把exe 文件里面的第一个图标,替换为指定的图标。

具体的实现细节,水平有限,我也不会,你可以参考其他资料。但是我负责的告诉你,思路就是这样的。这里有个现成的软件,就是有这个思路实现的:
http://www.pc6.com/softview/SoftView_55320.html

问题2:
这个很简单,直接修改注册表就行了。比如修改 txt 类型的文件图标(但是不修改打开 txt 文件的程序),可以修改:
HKEY_CLASSES_ROOT -> txtfile -> DefaultIcon
里面的默认项的值。

比如改为:
C:\WINDOWS\Installer\90140000-0011-0000-0000-0000000FF1CE\wordicon.exe,1
上面的这个图标其实就是 word 文件的默认图标啦。

【现在你重启 exeplor.exe 进程】,所有 txt 文件的图标,都是 word 文件的图标了。当然双击还是用 notepad.exe 打开的哦!

追问

十分感谢你的耐心解答!
对于问题二能否用代码写一下?我是新手谢谢
另外,C:\WINDOWS\Installer\90140000-0011-0000-0000-0000000FF1CE\wordicon.exe,1

是一个路径名称么?为什么会有大括号?
如果想改为一个指定的图片(不是系统其他文件的图标)怎么写(希望代码注释一下)谢谢

参考技术A   整体思路如下:
  #include <resource.h>
  #define ICO_MAIN 0x1000 //图标
  ICO_MAIN ICON "Main.ico"

  把这三个写在一个资源文件里面(就是.rc的),资源文件再加到工程中,"Main.ico"就是的图标文件,主程序中用:
  hIcon=LoadIcon(hInstance,ICO_MAIN);
  SendMessage(hWnd,WM_SETICON,ICON_BIG,hIcon);
 

C#上位机开发—— 修改窗口图标和exe文件图标

前言

早在18年,博主第一次开始写博客,内容为 C# 上位机开发,写完后收获了不错的阅读量和好评:

Github开源仓库:https://github.com/Mculover666/SerialAssistant

一、准备应用程序图标

首先寻找一个好看的应用程序图标图片,然后使用在线工具转换为 .ico格式

二、修改窗口图标

在窗口的属性中找到Icon项,选择要设置的图标即可:

运行后即可看到窗口图标被修改:

三、修改exe程序图标

首先配置生成release版本:

打开项目的属性:

选择图标,设置为exe文件的图标,保存

右击项目文件,点击重新生成:

在输出信息可以看到生成文件的路径:

进入该路径:

这个时候就可以拿着这个exe分享给小伙伴啦~

以上是关于c语言修改文件图标的主要内容,如果未能解决你的问题,请参考以下文章

如何修改C#winform程序图标

win7系统下C语言.c源文件图标变成记事本文件样式了

c语言写的控制台应用程序的图标怎么改?

win7系统的IE图标ICO原文件放在哪里?

C语言 加图标

Android 修改app图标和名称