个性化Folder Icon(Delphi)

原创 2002年08月05日 10:34:00


抛弃Windows的默认图标吧,让自己的程序所在的目录拥有个性化的Folder Icon!
其实作起来简单得很,实际上只需要一个Desktop.ini文件即可,下面我会从两个方面说明。

1. 手动方式:

首先要在需要改变的文件夹中创建一个Desktop.ini文件,例子如下
[.ShellClassInfo]
ConfirmFileOp=0
InfoTip=我自己的文件夹
IconIndex=0
IconFile=MyFolder.ico
解释:
   参数ConfirmFileOp设为0--防止用户在移动或删除此文件夹时弹出的“你正在删除系统目录”的警告。
   参数IconFile指定为将要改变的图标文件的位置,可以是Icon、Bmp、exe或者dll文件,上例中的图标文件也放置到同一目录中。
   参数IconIndex就可以指定文件的索引,如果此图标文件是Icon文件的话,IconIndex就设为0。
   参数InfoTip用来设定此Folder在Windows中的Tooltip。

下一步打开CMD(命令提示符),输入
attrib +s i:/MyFolder
i:/MyFolder指的就是我要改图标的目录的路径。此项操作是让你的文件夹成为系统文件夹。

好了,经过手动处理后现在的目录已经改变了风格。

2. 编程方式:

这种方式是用我喜欢的Delphi来实现的,实现起来也同样Easy。
一个用来操作Ini文件的建立,另一个的功能等同于手动方式中的attrib +s。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,IniFiles, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  MyIniFile: TIniFile;
  begin
  //以下几步用于创建Desktop.ini文件
  //不存在ini文件时,会自己创建ini
  MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName )+'Desktop.ini');
  MyIniFile.WriteString('.ShellClassInfo', 'ConfirmFileOp', '0');
  MyIniFile.WriteString('.ShellClassInfo', 'InfoTip', '我的文件夹因此而改变');
  MyIniFile.WriteString('.ShellClassInfo', 'IconIndex', '0');
  MyIniFile.WriteString('.ShellClassInfo', 'IconFile', ExtractFileName(Application.ExeName));
  MyIniFile.Free;
  //让文件夹成为系统文件夹
  SetFileAttributes(PChar(ExtractFilePath(Application.ExeName)), GetFileAttributes(PChar(ExtractFilePath(Application.ExeName))) OR  FILE_ATTRIBUTE_SYSTEM);
end;

end.


如果你使用的是主窗口的图标的话,Delphi编译后的程序的图标的索引是0。

 

本示例在Win2000和Delphi6中调试通过

delphi 7 应用程序的图标不能修改 ----------------- load icon 是灰色的。

 project-->   options   的对话框   project   options     中application   选项卡里     load   icon   是灰色的。 ===...
  • yunqian09
  • yunqian09
  • 2010年02月16日 11:21
  • 4174

Launcher3中Folder的一点分析

现在市面上大多数手机的桌面文件夹都是类似ios那样的风格,将内部包含的app缩略展示在icon图标上;但是Google原生的文件夹风格是圆形背景,app以45度角向外叠起来的。据说Android早期版...
  • zzj000
  • zzj000
  • 2016年11月14日 19:55
  • 1460

delphi 7 应用程序的图标不能修改 ----------------- load icon 是灰色的。 .

project-->   options   的对话框   project   options     中application   选项卡里     load   icon   是灰色的。  ...
  • fjclc2008
  • fjclc2008
  • 2012年05月30日 17:45
  • 1717

Flex中如何利用folderClosedIcon和folderOpenIcon样式,去掉Tree控件默认文件夹图标

 main.mxmlxml version="1.0" encoding="utf-8"?> mx:Application xmlns:mx="http://www.adobe.com/2006/mx...
  • heimaoxiaozi
  • heimaoxiaozi
  • 2009年06月09日 00:35
  • 719

android launcher folder功能详解

AndroidICS4.0的文件夹和2.3的文件夹区别比较大,主要区别有:        一、android2.3的文件夹大小是固定的,4.0的文件夹大小是按照里面的元素大小决定的。        二...
  • u011467537
  • u011467537
  • 2016年05月11日 17:18
  • 2249

delphi编写提取exe文件的ICO图标

会写自己的EXE程序,但没一个好看的EXE图标,是不是很遗憾啊?很多软件都有很好看的图标,我们为什么不提取出来呢?下面教你怎么用delphi编程提取EXE文件的图标,并保存为ICO格式的.代码如下:...
  • aroc_lo
  • aroc_lo
  • 2009年10月24日 08:32
  • 965

delphi listview vico 模式自绘图标大小不等原因解决。

在AdvancedCustomDrawItem 事件中自绘      TRect Rectone=Item->DisplayRect(drBounds);获得每个item在的大小。  由于每个...
  • cmlxiaogeaaa
  • cmlxiaogeaaa
  • 2015年10月15日 11:45
  • 342

delphi 把一个ICO转换为BMP

(1)方法1 var   Icon  : TIcon;   Bitmap : TBitmap; begin    Icon  := TIcon.Create;   ...
  • yanjiaye520
  • yanjiaye520
  • 2011年08月10日 16:20
  • 1604

Android Icon数字角标(BadgeNumber)的实现方式

Android系统 小米,三星,索尼手机发送桌面快键提醒数字图标,在Android系统中,众所周知不支持BadgeNumber,虽然第三方控件BadgeView可以实现应用内的数字提醒,但对于系统的图...
  • syusikoku
  • syusikoku
  • 2016年07月24日 17:32
  • 1175

FireMonkey TrayIcon组件

其实说实在的, 这个很好做, 只是调用了一个api而以, 没有其它的, 封装为控件也是不t...
  • zyjying520
  • zyjying520
  • 2014年05月30日 21:39
  • 3774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:个性化Folder Icon(Delphi)
举报原因:
原因补充:

(最多只允许输入30个字)