個性化資料夾圖示(VB)

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. 程式設計方式:

這種方式是用我喜歡的VB來實現的,實現起來也同樣Easy。
只需要兩個API函式,一個用來操作Ini檔案的建立,另一個的功能等同於手動方式中的attrib +s。

Option Explicit
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Declare Function PathMakeSystemFolder Lib "shlwapi.dll" Alias "PathMakeSystemFolderA" (ByVal pszPath As String) As Long

Private Sub Form_Load()
'以下幾步用於建立Desktop.ini檔案
'不存在ini檔案時,會自己建立ini
WritePrivateProfileString ".ShellClassInfo", "ConfirmFileOp", "0", App.Path & "/desktop.ini"
WritePrivateProfileString ".ShellClassInfo", "InfoTip", "我的資料夾因此而改變", App.Path & "/desktop.ini"
WritePrivateProfileString ".ShellClassInfo", "IconIndex", "0", App.Path & "/desktop.ini"
WritePrivateProfileString ".ShellClassInfo", "IconFile", "MyFolder.ico", App.Path & "/desktop.ini"
'讓資料夾成為系統資料夾
PathMakeSystemFolder App.Path
End Sub

需要進一步說明的是
WritePrivateProfileString ".ShellClassInfo", "IconFile", "MyFolder.ico", App.Path & "/desktop.ini"
可以改為
WritePrivateProfileString ".ShellClassInfo", "IconFile", App.EXEName & ".exe", App.Path & "/desktop.ini"
如果你使用的是主視窗的圖示的話,VB編譯後的程式的圖示的索引也是使用的0。

 

本示例在Win2000和VB6中除錯通過

相關文章