個性化文件夾圖標(VB)

 

拋棄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中調試通過

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章