修改文件图标

公司的办公电脑不但配置低下,问题也比较多。
就有这么一个问题:便于查看和修改代码,于是将*.c、*.cpp和*.h文件默认打开方式修改为:NotePad++。可是这几类文件的图标却变为Windows默认的未知程序图标。但是双击打开是没有问题的,也就是说其他一切正常,只是文件图标没有了。
虽说是小问题,但是总让人不舒服。
其实可以通过如下操作,以*.c文件类型为例,来修改文件图标:
1.通过“控制面板”或“资源管理器”打开“文件夹选项”,选择“文件类型”选项卡。
2.在“已注册的文件类型”中找到“C”文件类型,点击“高级”按钮,出现“编辑文件类型”对话框。
3.点击“更改图标”按钮,出现“更改图标”对话框。
4.点击“浏览”按钮,找到NotePad++程序的安装目录,并选中notepad++.exe。然后在预览框中会出现所有保存在notepad++.exe文件中的图标,选中一个即可。
5.依次单击“确定”,完成更新。你会看到*.c类型的文件图标都更新了。

注:经过以上的操作,*.c文件图标更新了,这还在预料之中。可是,*.cpp、*.h等文件图标也跟着更新了,这一点却是始料未及的。由此可见,这电脑系统的确存在问题。因此,上述方法不敢保证其通用性,因为仅在有问题的机器上验证通过而已。

Delphi是一种可视化的编程语言和集成开发环境,可用于创建各种应用程序。修改文件图标是其中的一个功能,下面介绍如何使用Delphi来实现该功能。 我们可以使用ShellAPI单元中的ExtractIconEx函数来获取系统中的图标,并使用SHChangeNotify函数通知系统文件更改。 首先,在程序中添加ShellAPI单元,然后创建一个TImageList组件,其用于存储我们获取到的图标。接下来定义一个函数GetFileIcon用于获取文件图标。 函数的代码如下: procedure GetFileIcon(const AFileName: string; ImageList: TImageList; var IconIndex: integer); var Icon: HICON; IconCount: integer; begin IconCount := ExtractIconEx(PChar(AFileName), -1, nil, nil, 0); if IconCount > 0 then begin IconIndex := ImageList.AddIcon(Icon); DestroyIcon(Icon); end; end; 接着,在主窗体的OnCreate事件中定义一个图标索引值,用于保存我们刚刚添加的图标: var IconIndex: integer; ... procedure TForm1.FormCreate(Sender: TObject); begin ... IconIndex := -1; end; 最后,在我们需要修改文件图标的地方,我们可以调用GetFileIcon函数来获取需要修改文件图标,然后将其设置为相应的文件图标。 代码如下: procedure TForm1.Button1Click(Sender: TObject); var Icon: HICON; FileInfo: TSHFileInfo; begin if SelectDirectory('请选择需要修改图标的目录', '', s) then begin if IconIndex = -1 then begin Icon := LoadIcon(hInstance, 'MAINICON'); ImageList1.Clear; ImageList_AddIcon(ImageList1.Handle, Icon); IconIndex := ImageList1.Count - 1; end; SHGetFileInfo(PChar(s), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON); FileInfo.hIcon := ImageList1.GetIcon(IconIndex); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); ShowMessage('文件图标修改成功!'); end; end; 通过以上步骤,我们就可以使用Delphi实现修改文件图标的功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值