程序:个性化文件夹的小工具

优质
小牛编辑
118浏览
2023-12-01
能更改XP文件夹和驱动器的图标,背景提示文字等的小工具。

用NSIS编写,附源代码:

;NSIS脚本
;文件夹个性化
;编写:ansifa
;E-mail: ansifa@163.com
;__________________________________
SetCompressor /SOLID /FINAL lzma
XPStyle on
CRCCHECK OFF
!include "MUI.nsh"
!include "WordFunc.nsh"
!insertmacro WordReplace
InstallButtonText "设置(&S)"
MiscButtonText "" "" "退出(&X)" ""
!insertmacro WordFind
!insertmacro MUI_LANGUAGE "SimpChinese"
SetFont /LANG=${LANG_SimpChinese} "tahoma" 8
Name "文件夹个性化"
OutFile "个性化文件夹.exe"
Caption "文件夹个性化向导"
Icon ICON.ico
BrandingText "文件夹个性化向导-编写:ansifa"
;程序版本信息
  VIProductVersion "1.0.0.0"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "ProductName" "文件夹个性化向导"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "Comments" "能更改XP文件夹和驱动器的图标,背景提示文字等的小工具。"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "CompanyName" "ansifa"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalTrademarks" "ansifa"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalCopyright" "Copyright (C) 2007 ansifa"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileDescription" "文件夹个性化向导"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "OriginalFilename" "文件夹个性化向导.exe"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "InternalName" "文件夹个性化向导.exe"
  VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileVersion" "1.0.0.0"

Var INI
Var HWND
Page Custom ShowCustom LeaveCustom
Page instfiles

Function .onInit
BringToFront
InitPluginsDir
GetTempFileName $INI $PLUGINSDIR
File /oname=$INI "个性化文件夹.ini"
strcpy $R9 "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\IndividuationFolder"
ReadRegStr $1 HKCU $R9 "BG"
ReadRegStr $2 HKCU $R9 "ICON"
ReadRegStr $3 HKCU $R9 "FOLDER"
ReadRegStr $4 HKCU $R9 "COLOR"
ReadRegStr $5 HKCU $R9 "TIP"
ReadRegStr $7 HKCU $R9 "run"
StrCmp "$7" "" +1 +3
MessageBox MB_ICONINFORMATION|MB_YESNO "欢迎使用文件夹个性化向导,你可以使用此向导更改文件夹和驱动器的图标,背景提示文字等.$\n$\n$\n而且此向导已经安装至你的系统,以后右击要更改的文件夹>个性化文件夹 也可以打开此程序并指定要更改的文件夹是刚才右击的文件夹.$\n$\n$\n由于注册表与此程序已关联(右击文件夹的快捷方式),所以此程序不能更改名称,如果移动此程序,则移动后需要在新位置打开一次新程序.以便程序重新与注册表关联.$\n$\n$\n$\n$\n$\n选[是]下次显示此消息;选[否]不再显示." IDYES +2
WriteRegStr HKCU $R9 "run" 1
${WordReplace} '$CMDLINE' '"$EXEDIR\个性化文件夹.EXE" ' '' '+' $6
StrCmp "$6" "" +2 +1
StrCpy "$5" "$6"
WriteINIStr $INI "Field 1" "State" $1 ;图标
WriteINIStr $INI "Field 2" "State" $2 ;背景
WriteINIStr $INI "Field 3" "State" $3 ;提示
WriteINIStr $INI "Field 4" "State" $4 ;文字颜色
WriteINIStr $INI "Field 5" "State" $5 ;更改的文件夹
FunctionEnd

Function ShowCustom
!insertmacro MUI_HEADER_TEXT "个性化文件夹" "你可以使用此程序更改文件夹和驱动器的图标,背景提示文字等."
InstallOptions::initDialog /NOUNLOAD "$INI"
InstallOptions::show
FunctionEnd

Function LeaveCustom
Pop $hwnd
ReadINIStr $0 $INI "Settings" "State"
StrCmp $0 13 a +1
StrCmp $0 15 link +1
ReadINIStr $R1 $INI "Field 1" "State" ;图标
ReadINIStr $R2 $INI "Field 2" "State" ;图片
ReadINIStr $R3 $INI "Field 3" "State" ;提示信息
ReadINIStr $R4 $INI "Field 4" "State" ;文字颜色
ReadINIStr $R5 $INI "Field 5" "State" ;文件夹
goto pass
a:
ReadINIStr $8 $INI "Field 13" "State"
${WordFind} $8 " " "+1{*" $4
WriteINIStr $INI "Field 4" "State" $4
GetDlgItem $9 $HWND 1205
SendMessage $9 0x000C 1 "STR:$4" ;设置文字
abort
pass:
System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
MessageBox MB_ICONQUESTION|MB_YESNOCANCEL '是否应用文件夹个性化设置?$\n选[是]应用设置,$\n选[否]清除目标文件夹中的个性化设置,$\n按[取消]退出.' IDNO clear IDCANCEL END
CreateDirectory "$R5"
CopyFiles /SILENT /FILESONLY "$R1" "$R5\ "
SetFileAttributes "$R5\ " ARCHIVE|HIDDEN|SYSTEM|TEMPORARY
CopyFiles /SILENT /FILESONLY "$R2" "$R5\  "
SetFileAttributes "$R5\  " ARCHIVE|HIDDEN|SYSTEM|TEMPORARY
SetFileAttributes "$R5\Desktop.ini" 0
StrCmp $R5 "C:\" driver +1
StrCmp $R5 "D:\" driver +1
StrCmp $R5 "E:\" driver +1
StrCmp $R5 "F:\" driver +1
StrCmp $R5 "G:\" driver +1
StrCmp $R5 "H:\" driver +1
StrCmp $R5 "I:\" driver +1
StrCmp $R5 "J:\" driver +1
StrCmp $R5 "K:\" driver +1
StrCmp $R5 "L:\" driver +1
StrCmp $R5 "M:\" driver +1
StrCmp $R5 "N:\" driver +1
StrCmp $R5 "O:\" driver +1
StrCmp $R5 "P:\" driver +1
StrCmp $R5 "Q:\" driver +1
StrCmp $R5 "R:\" driver +1
StrCmp $R5 "S:\" driver +1
StrCmp $R5 "T:\" driver +1
StrCmp $R5 "U:\" driver +1
StrCmp $R5 "V:\" driver +1
StrCmp $R5 "W:\" driver +1
StrCmp $R5 "X:\" driver +1
StrCmp $R5 "T:\" driver +1
StrCmp $R5 "Z:\" driver +1
GOTO SET
driver:
SetFileAttributes "$R5\Autorun.inf" 0
WriteINIStr "$R5\Autorun.inf" "AUTORUN" "Icon" " "
SetFileAttributes "$R5\Autorun.inf" ARCHIVE|HIDDEN|SYSTEM|TEMPORARY
MessageBox MB_ICONINFORMATION|MB_OK '你个性化的文件夹"$R5"是硬盘根目录,必需重启计算机才能生效.'
SET:
WriteINIStr "$R5\Desktop.ini" ".ShellClassInfo" "IconFile" " "
WriteINIStr "$R5\Desktop.ini" "{BE098140-A513-11D0-A3A4-00C04FD706EC}" "IconArea_Image" "  "
WriteINIStr "$R5\Desktop.ini" ".ShellClassInfo" "IconIndex" "0"
WriteINIStr "$R5\Desktop.ini" ".ShellClassInfo" "InfoTip" "$R3"
WriteINIStr "$R5\Desktop.ini" "{BE098140-A513-11D0-A3A4-00C04FD706EC}" "IconArea_Text" "0x$R4"
SetFileAttributes "$R5\Desktop.ini" ARCHIVE|HIDDEN|SYSTEM|TEMPORARY
SetFileAttributes "$R5" ARCHIVE|READONLY
FINISH:
System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
WriteRegStr HKCU $R9 "BG" $R1
WriteRegStr HKCU $R9 "ICON" $R2
WriteRegStr HKCU $R9 "FOLDER" $R3
WriteRegStr HKCU $R9 "COLOR" $R4
WriteRegStr HKCU $R9 "TIP" $R5
WriteRegStr HKCU $R9 "ME" $R6
MessageBox MB_YESNO|MB_ICONINFORMATION '文件夹"$R5"已成功更改,是否打开以查看效果?' IDYES +1 IDNO +3
System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
Exec '$WinDIR\Explorer.exe "$R5"'
END:
Abort
clear:
Delete "$R5\  "
Delete "$R5\ "
Delete "$R5\Desktop.ini"
SetFileAttributes "$R5" 0
GOTO FINISH
Abort
link:
ReadINIStr $R7 $INI "Field 15" "State"
StrCmp $R7 1 +1 +4
WriteRegStr HKCR "Directory\shell\Zindiv" "" "个性化文件夹"
WriteRegStr HKCR "Directory\shell\Zindiv\command" "" '"$EXEDIR\个性化文件夹.EXE" %l'
Abort
DeleteRegKey HKCR "Directory\shell\Zindiv"
Abort
FunctionEnd

Section
SectionEnd

引用 个性化文件夹.ini 的内容:

[Settings]
NumFields=15

[Field 1]
Type=FileRequest
Filter=可支持的图标格式(*.ico;*.icl;*.cur;*.ani)|*.ico;*.icl;*.cur;*.ani|图标文件(*.ico)|*.ico|图标库(*.icl)|*.icl|指针(*.cur)|*.cur|动态指针(*.ani)|*.ani|所有文件(*.*)|*.*
Text=请选择文件夹的图标:
Left=30
Right=-8
Top=12
Bottom=24
Flags=FILE_MUST_EXIST|FILE_HIDEREADONLY

[Field 2]
Type=FileRequest
Filter=可支持的图片格式(*.JPG;*.GIF;*.BMP;*.PNG;*.JPEG;*.JPE;*.RLE;*.UPI)|*.JPG;*.GIF;*.BMP;*.PNG|JPEG文件交换格式(*.JPG;*.JPEG;*.JPE)|*.JPG;*.JPEG;*.JPE|Windows位图(*.BMP;*.RLE;*.UPI)|*.BMP;*.RLE;*.UPI|便携网络图形(*.PNG)|*.PNG|GIF动画(*.GIF)|*.GIF|所有文件(*.*)|*.*
Text=请选择文件夹背景图片的路径:
Left=30
Right=-8
Top=28
Bottom=40
Flags=FILE_MUST_EXIST|FILE_EXPLORER

[Field 3]
Type=text
Left=0
Right=-10
Top=57
Bottom=68

[Field 4]
Type=text
MaxLen=6
Left=40
Right=77
Top=76
Bottom=88

[Field 5]
Type=DirRequest
Text=请选择要更改的文件夹:
Left=0
Right=-10
Top=126
Bottom=137

[Field 6]
Type=Label
Text=请选择将用于文件夹的图标与背景即提示信息:
Left=14
Right=-10
Top=0
Bottom=11

[Field 7]
Type=Label
Text=图标:
Left=0
Right=30
Top=14
Bottom=25

[Field 8]
Type=Label
Text=背景:
Left=0
Right=25
Top=30
Bottom=41

[Field 9]
Type=Label
Text=提示信息(当鼠标在文件夹上停留片刻即会显示此文字):
Left=0
Right=-10
Top=44
Bottom=54

[Field 10]
Type=Label
Text=文字颜色:
Left=0
Right=40
Top=78
Bottom=89

[Field 11]
Type=Label
Text=说明:文字颜色只可填进16进制的RGB颜色代码,即由0-9与A-F组成,格式为BBGGRR,R为红色亮度,B为蓝色亮度,G为绿色亮度.
Left=126
Right=-83
Top=75
Bottom=115

[Field 12]
Type=Label
Text=颜色代码参考:
Left=0
Right=53
Top=95
Bottom=106

[Field 13]
Type=droplist
State=000000 黑色
ListItems=000000 黑色|FFFFFF 白色|0000FF 红色|FF0000 蓝色|00FF00 绿色|00FFFF 黄色|FF00FF 玫瑰红|FFFF00 青绿|808080 灰色|000080 棕色|008000 深绿|800000 靛蓝
Left=54
Right=124
Top=92
Bottom=104
Flags=NOTIFY

[Field 14]
Type=Label
Text=要应用更改的文件夹:
Left=0
Right=86
Top=113
Bottom=124

[Field 15]
Type=Checkbox
Text=添加快捷方式到右键菜单
Flags=NOTIFY
Left=226
Right=290
Top=84
Bottom=102

点击另存资源文件