個性化Folder Icon(Delphi)

40Star發表於2020-04-04


拋棄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中除錯通過

相關文章